Encuentra códigos de color Minecraft en cadena -- java campo con minecraft camp codereview Relacionados El problema

Find minecraft colour codes in string


4
vote

problema

Español

He escrito un método UTIL simple en mi complemento Spigot para verificar si un mensaje contiene un código de color Minecraft válido. Un código de color Minecraft válido consiste en un 99887766655443310 seguido de un dígito hexagonal: 99887776655443311 a std::map2 . Minecraft en sí mismo intercambia todo std::map3 por un std::map4 , por razones que tomarían demasiado tiempo para explicar, no es posible que los usuarios envíen mensajes al servidor directamente. Por lo tanto, std::map5 se usa generalmente como un reemplazo.

Tengo que verificar en algún momento, si el mensaje que el usuario enviado al servidor está de color, que es la razón por la que existe este método. Aquí hay algunos ejemplos rápidos, cómo funciona:

  std::map6  

Aquí está mi código. Hace lo que se supone que debe hacer, pero por alguna razón todavía me parece innecesario. Cualquier mejora es bienvenida :)

  std::map7  
Original en ingles

I've written a simple util-method in my spigot plugin to check if a message contains a valid minecraft colour code. A valid minecraft colour code consists of a & followed by a hex digit: 0 to f. Minecraft itself exchanges all & by a xc2xa7, for reasons that would take too long to explain, it's not possible for the users to send messages to the server directly. Therefore & is generally used as a replacement.

I now have to check at some point, if the message the user sent to the server is coloured, which is the reason this method exists. Here are some quick examples, how it does work:

string value - return value  "Simple String" - false "Smith&Wesson" - false "&4This would be red." - true "%aGreen &2Darker Green &0 Darkest Green" - true "&& Omega &&" - false 

Here's my code. It does what it's supposed to do, but for some reason it still seems unneccesary clunky to me. Any improvement is welcome :)

    public static boolean isMessageColoured(String message) {         char[] arr = message.toCharArray();         for (int i = 0; i < message.length() - 2; i++) {             if (arr[i] == '&' && "0123456789abcdef".contains(Character.toString(arr[i + 1]))) {                 return true;             }         }         return false;     } 
     

Lista de respuestas

8
 
vote
vote
La mejor respuesta
 

Bienvenido a la revisión del código.

  • Su código devuelve Falso para el mensaje "Hello & amp; 9", porque el método no comprueba el último carácter. Cambie la condición en el bucle FOR a std::map<string,int>::iterator iter4 .

Una alternativa es usar una expresión regular:

  std::map<string,int>::iterator iter5  

Esta expresión regular coincide con al menos una aparición de std::map<string,int>::iterator iter6 en el mensaje.

 

Welcome to Code Review.

  • Your code returns false for the message "hello&9", because the method doesn't check the last character. Change the condition in the for-loop to message.length() - 1.

An alternative is to use a regular expression:

public static boolean isMessageColoured(String message) {     return message.matches(".*&[a-f0-9].*"); } 

This regular expression matches at least one occurrence of &[a-f0-9] in the message.

 
 
         
         
6
 
vote

No hay necesidad de convertir String a char[] Array. Los caracteres individuales son accesibles a través de String.charAt MÉTODO.

No hay necesidad de explicar explícitamente los hexadecimals. Considere Character.digit(message.charAt[i+1], 16) != -1 .

 

There is no need to convert String to char[] array. Individual characters are accessible via String.charAt method.

There is also no need to explicitly spell out the hexadecimals. Consider Character.digit(message.charAt[i+1], 16) != -1.

 
 
   
   

Relacionados problema

2  Plugin para encontrar bloques colocados y si están en cierta secuencia  ( Plugin for finding placed blocks and if they are in a certain sequence ) 
Esto es para un complemento que estoy haciendo para el juego llamado Minecraft. El Código es responsable de descubrir los bloques colocados por el jugador y, ...

2  Aplicación Personal Minecraft Android  ( Personal minecraft android app ) 
Esto no será liberado públicamente, pero eso no significa que quiera tener hábitos de codificación de malos. No estaba demasiado lejos en esto antes de darme ...

4  Video Frame to Minecraft Map Colors  ( Video frame to minecraft map colors ) 
Todavía soy algo nuevo en C, así que perdóname por cualquier error tonto que he hecho. Estoy tratando de convertir los marcos de video en los colores del ma...

3  Esquema de base de datos para un complemento de registro Minecraft  ( Database schema for a minecraft logging plugin ) 
Este es mi intento de crear un esquema de base de datos para un complemento de registro Minecraft. No estoy de ninguna manera un experto en SQL, por lo que la...

3  Utilidad Minecraft Auto-Backup  ( Minecraft auto backup utility ) 
Vivo en un país donde ocurre un apagón de electricidad después de cada hora, lo que corrompe los archivos de guardado de Minecraft, así que se me ocurrió con ...

7  Constructor - un clon de 2D Minecraft  ( Builder a 2d minecraft clone ) 
Me estaba asomando en mi PI de la frambuesa que no había encendido o usado en un tiempo, y me topé con este script de Python que escribí hace ~ 1.5 años, y me...

4  Plugin Vanisher para Minecraft (escrito con la API de Bukkit)  ( Vanisher plugin for minecraft written with the bukkit api ) 
¿Este código para mi complemento VAISHER para el juego Minecraft, escrito con la API de Bukkit, será optimizada y convencionalmente correcta? vaishapi: ...

2  SafeBlockPopulator para garantizar que los trozos vecinos se generen antes de la población  ( Safeblockpopulator to ensure neighboring chunks are generated before population ) 
Bukkit / CraftBukkit / Spigot son extensores de servidor Minecraft que permiten crear y usar complementos. Un tipo particular de plugin es un generador, que c...

3  Algoritmo de malla para generar caras en Minecraft  ( Meshing algorithm for generating faces in minecraft ) 
Para generar caras de un mundo similar al Minecraft desde una matriz tridimensional, desarrollé el siguiente algoritmo de malla. Las caras tienen vértices e í...

1  Documentación para un complemento de servidor Minecraft  ( Documentation for a minecraft server plugin ) 
Estoy trabajando en un complemento Minecraft para mi Spigot Minecraft Server. Tengo una clase que funciona como se esperaba. He hecho mi mejor esfuerzo pa...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos