Les méthodes qui renvoient une valeur booléenne commencent le plus souvent par le mot "est" et signifient vérifier si l'élément vérifié correspond à une certaine condition. La méthode Character.isDigit() , dont nous allons parler dans cet article, détermine si la valeur char spécifiée est un chiffre.

Syntaxe de la méthode Java isDigit

java.lang.Character.isDigit(char ch) est une méthode intégrée à Java qui détermine si le caractère spécifié est un chiffre ou non. Que signifie "un chiffre" dans le contexte de programmation Java ? Selon la définition de Java Doc, si la méthode Character.getType(ch) renvoie la constante DECIMAL_DIGIT_NUMBER , alors le caractère est un chiffre. Certaines plages de caractères Unicode contenant des chiffres sont les suivantes :
  • De '\u0030' à '\u0039' sont des chiffres ISO-LATIN-1 ('0' à '9')

  • De '\u0660' à '\u0669' sont des chiffres arabo-indiens

  • De '\u06F0' à '\u06F9' sont des chiffres arabes-indiens étendus

  • De '\u0966' à '\u096F' sont des chiffres Devanagari

  • De \uFF10' à '\uFF19'sont des chiffres pleine chasse

Il existe également d'autres plages contenant des chiffres. Cependant, le plus souvent, nous allons utiliser des chiffres de '\u0030' à '\u0039'. La syntaxe de Character.isDigit() est ici :

public static boolean isDigit(char myChar)
myChar est le caractère à tester. Cette méthode renvoie true si le caractère est un chiffre et false sinon. Selon la méthode Java doc isDigit(char myChar) ne peut pas gérer les caractères supplémentaires. Pour prendre en charge tous les caractères Unicode, y compris les caractères supplémentaires, le programmeur doit utiliser la méthode isDigit(int) . Cela ressemble à la même chose, mais, grâce à la POO et au support du polymorphisme, cela fonctionne un peu différemment. public static boolean isDigit(int codePoint) détermine si le caractère spécifié (point de code Unicode) est un chiffre. Dans la terminologie du codage de caractères, un point de code ou une position de code est une valeur numérique qui correspond à un caractère spécifique.isDigit(int codePoint) renvoie également true si le caractère est un chiffre et false sinon.

Exemple simple de la méthode Java isDigit

Essayons de travailler avec la méthode Java Characher.isDigit() . Tout d'abord, nous allons écrire un programme simple pour démontrer la méthode.

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 sortie est :
est car 5 un chiffre? vrai est char ua chiffre? false est char ua chiffre? vrai

Méthode Java isDigit, exemple un peu plus compliqué

Essayons d'utiliser Character.isDigit()dans un problème de la vie plus intéressant et réel. Il existe une méthode de compression appelée Run Length Encoding ou RLE en abrégé. Run Length Encoding est un algorithme de compression de données qui remplace les caractères répétés (séries) par un caractère et le nombre de ses répétitions. Une série est une séquence composée de plusieurs caractères identiques. Lors de l'encodage (packing, compression), une chaîne de caractères identiques constituant une série est remplacée par une chaîne contenant le caractère répétitif lui-même et le nombre de ses répétitions. Donc, si vous avez une chaîne "hhhhhorrribleeee", l'encodage de longueur d'exécution donne un résultat : h5or3ible5. Si vous décodez la chaîne, vous devez vérifier séquentiellement si vous avez un chiffre ou un caractère non numérique, et si vous avez un chiffre, il est temps d'obtenir ce qu'est le chiffre. Au fait, vous connaissez tous les fichiers JPEG. Ce format utilise une variante de codage de longueur de plage dans un motif diagonal sur des données quantifiées. La variante est que seule la longueur des séries de valeurs nulles est codée et toutes les autres valeurs sont codées comme elles-mêmes. Dans l'exemple ci-dessous, nous utilisons leMéthode Character.isDigit(char ch) pour décoder une chaîne codée avec le codage Run-length. Si vous êtes intéressé, essayez de terminer le programme, ou plutôt, créez sa première partie et écrivez une méthode pour encoder une chaîne RLE, ainsi que lire une chaîne à partir d'un fichier. Ou en entrant manuellement une chaîne à partir de la console tout en vérifiant l'exactitude de l'entrée. Voici un exemple de décodage 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 sortie est :
CCCecddffffffff
Vous avez peut-être remarqué que nous n'utilisons pas un String , mais un StringBuilder . Pourquoi? Le fait est que String est immuable, et nous incrémentons le compteur, et à chaque fois une nouvelle chaîne sera créée. Nous avons également utilisé la méthode Character.digit dans le programme. java.lang.Character.digit() est une méthode qui renvoie la valeur numérique du caractère ch dans le système de numération spécifié. Si la base n'est pas dans la plage MIN_RADIX <= base <= MAX_RADIX, ou si ch n'est pas un chiffre valide dans la base spécifiée, la méthode renvoie -1.