CodeGym /Blog Java /Random-ES /Método isDigit de Java
Autor
Alex Vypirailenko
Java Developer at Toshiba Global Commerce Solutions

Método isDigit de Java

Publicado en el grupo Random-ES
Los métodos que devuelven un valor booleano suelen comenzar con la palabra "es" y significan comprobar si el elemento que se está comprobando coincide con una determinada condición. El método Character.isDigit() , del que hablaremos en este artículo, determina si el valor char especificado es un dígito.

Sintaxis del método Java isDigit

java.lang.Character.isDigit(char ch) es un método incorporado en Java que determina si el carácter especificado es un dígito o no. ¿Qué significa "un dígito" en el contexto de programación de Java? De acuerdo con la definición en Java Doc, si el método Character.getType(ch) devuelve la constante DECIMAL_DIGIT_NUMBER , entonces el carácter es un dígito. Algunos rangos de caracteres Unicode que contienen dígitos son los siguientes:
  • De '\u0030' a '\u0039' son dígitos ISO-LATIN-1 ('0' a '9')

  • Desde '\u0660' hasta '\u0669' son dígitos arábigos-índicos

  • Desde '\u06F0' hasta '\u06F9' son dígitos árabes-índicos extendidos

  • Desde '\u0966' hasta '\u096F' son dígitos Devanagari

  • Desde \uFF10' hasta '\uFF19'son dígitos de ancho completo

También hay algunos otros rangos que contienen dígitos. Sin embargo, la mayoría de las veces vamos a usar dígitos de '\u0030' a '\u0039'. La sintaxis de Character.isDigit() está aquí:

public static boolean isDigit(char myChar)
Donde myChar es el carácter a probar. Este método devuelve verdadero si el carácter es un dígito y falso en caso contrario. Según el método Java doc isDigit(char myChar) no puede manejar caracteres adicionales. Para admitir todos los caracteres Unicode, incluidos los caracteres complementarios, el programador debe utilizar el método isDigit(int) . Se ve de la misma manera, pero, gracias a OOP y el soporte de polimorfismo funciona un poco diferente. public static boolean isDigit(int codePoint) determina si el carácter especificado (punto de código Unicode) es un dígito. En la terminología de codificación de caracteres, un punto de código o una posición de código es un valor numérico que corresponde a un carácter específico.isDigit(int codePoint) también devuelve verdadero si el carácter es un dígito y falso en caso contrario.

Ejemplo simple del método Java isDigit

Intentemos trabajar con el método Java Characher.isDigit() . En primer lugar, vamos a escribir un programa simple para demostrar el método.

public class isDigitTest {
//isDigit(char ch) simple example
   public static void main(String[] args)
   {

       //characters to check using isDigit Java method
       char myChar1 = '5', myChar2 = 'u', myChar3 = '0';

       // Function to check if the character
       // is digit or not, using isDigit() method
       System.out.println("is char " + myChar1 + " a digit? "
                       + Character.isDigit(myChar1));
       System.out.println(
               "is char " + myChar2 + " a digit? "
                       + Character.isDigit(myChar2));

       System.out.println(
               "is char " + myChar3 + " a digit? "
                       + Character.isDigit(myChar3));
   }
}
La salida es:
¿El carácter 5 es un dígito? verdadero ¿Es char u un dígito? FALSO ¿Es char u un dígito? verdadero

Método Java isDigit, un ejemplo un poco más complicado

Intentemos usar Character.isDigit()en un problema de la vida más interesante y real. Hay un método de compresión llamado codificación de longitud de ejecución o RLE para abreviar. La codificación de longitud de ejecución es un algoritmo de compresión de datos que reemplaza los caracteres repetidos (series) con un carácter y el número de sus repeticiones. Una serie es una secuencia que consta de varios caracteres idénticos. Al codificar (empaquetar, comprimir), una cadena de caracteres idénticos que forman una serie se reemplaza por una cadena que contiene el propio carácter repetido y el número de sus repeticiones. Entonces, si tiene una cadena "hhhhhorrribleeee", la codificación de longitud de ejecución da un resultado: h5or3ible5. Si decodifica la cadena, debe verificar secuencialmente si tiene un carácter de dígito o no dígito, y si tiene un dígito, es hora de obtener cuál es el dígito. Por cierto, todos ustedes conocen los archivos JPEG. Este formato utiliza una variante de codificación de longitud de ejecución en un patrón diagonal sobre datos cuantificados. La variante es que solo se codifica la longitud de las series de valores cero y todos los demás valores se codifican como ellos mismos. En el siguiente ejemplo, usamos elCharacter.isDigit(char ch) método para decodificar una cadena codificada con codificación de longitud de ejecución. Si está interesado, intente completar el programa, o más bien, cree su primera parte y escriba un método para RLE codificar una cadena, así como leer una cadena de un archivo. O ingresando manualmente una cadena desde la consola mientras verifica la corrección de la entrada. Aquí hay un ejemplo de decodificación RLE:

public class RleTest {

   //the method to decode String using run-length encoding and 
//isDigit() method 
   private static String decodeRle(String encoded) {
       if (encoded.isBlank()) return "";
       StringBuilder result = new StringBuilder();
       int count = 0;
       char baseChar = encoded.charAt(0);
       for (int i = 1; i <= encoded.length(); i++) {
           char c = i == encoded.length() ? '$' : encoded.charAt(i);
//checking using isDigit() method           
if (Character.isDigit(c)) {
               count = count * 10 + Character.digit(c, 10);
           } else {
               do {
                   result.append(baseChar);
                   count--;
               } while (count > 0);
               count = 0;
               baseChar = c;
           }
       }
       return result.toString();
   }
   
public static void main(String[] args) {
//here we are going to decode an RLE-encoded string 
       System.out.println(decodeRle("C3ecddf8"));
   }
}
La salida es:
CCCecddffffffff
Es posible que haya notado que no estamos usando un String , sino un StringBuilder . ¿Por qué? El hecho es que String es inmutable, e incrementamos el contador, y cada vez que se crea una nueva cadena. También usamos el método Character.digit en el programa. java.lang.Character.digit() es un método que devuelve el valor numérico del carácter ch en el sistema numérico especificado. Si la base no está en el rango MIN_RADIX <= base <= MAX_RADIX, o si ch no es un dígito válido en la base especificada, el método devuelve -1.
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION