Gérer les caractères non alphabétiques
Dans l'étape précédente, nous avons utilisé Character.isUpperCase()
pour identifier les lettres majuscules. Cependant, les chaînes de caractères peuvent contenir plus que simplement des lettres - elles peuvent inclure des nombres, des symboles, des espaces et des ponctuations. Lors de l'analyse de chaînes de caractères, il est souvent nécessaire de distinguer entre différents types de caractères.
La classe Character
fournit d'autres méthodes utiles à cet effet, telles que :
Character.isLetter(char ch)
: Vérifie si un caractère est une lettre.
Character.isDigit(char ch)
: Vérifie si un caractère est un chiffre (0 - 9).
Character.isWhitespace(char ch)
: Vérifie si un caractère est un caractère d'espacement (comme l'espace, la tabulation, le saut de ligne).
Modifions à nouveau notre fichier StringCompare.java
pour montrer comment gérer les caractères non alphabétiques et compter différents types de caractères dans une chaîne. Ouvrez ~/project/StringCompare.java
dans l'éditeur et remplacez son contenu par le code suivant :
public class StringCompare {
public static void main(String[] args) {
String text = "Hello World 123!";
int letterCount = 0;
int digitCount = 0;
int whitespaceCount = 0;
int otherCount = 0;
System.out.println("Analyzing the string: \"" + text + "\"");
// Loop through each character in the string
for (int i = 0; i < text.length(); i++) {
char character = text.charAt(i); // Get the character at the current index
// Check the type of the character
if (Character.isLetter(character)) {
letterCount++;
} else if (Character.isDigit(character)) {
digitCount++;
} else if (Character.isWhitespace(character)) {
whitespaceCount++;
} else {
otherCount++; // Characters that are not letters, digits, or whitespace
}
}
System.out.println("Total characters: " + text.length());
System.out.println("Letter count: " + letterCount);
System.out.println("Digit count: " + digitCount);
System.out.println("Whitespace count: " + whitespaceCount);
System.out.println("Other character count: " + otherCount);
}
}
Dans ce code mis à jour :
- Nous initialisons des compteurs pour les lettres, les chiffres, les caractères d'espacement et les autres caractères.
- À l'intérieur de la boucle, nous utilisons des instructions
if - else if - else
pour vérifier le type de chaque caractère en utilisant Character.isLetter()
, Character.isDigit()
et Character.isWhitespace()
.
- Nous incrémentons le compteur correspondant en fonction du type de caractère.
- Enfin, nous affichons les compteurs pour chaque type de caractère.
Enregistrez le fichier (Ctrl + S
).
Maintenant, compilez et exécutez le programme dans le terminal depuis le répertoire ~/project
:
Compilez :
javac StringCompare.java
Exécutez :
java StringCompare
Vous devriez voir une sortie similaire à celle-ci :
Analyzing the string: "Hello World 123!"
Total characters: 16
Letter count: 10
Digit count: 3
Whitespace count: 2
Other character count: 1
Cette sortie identifie et compte correctement les différents types de caractères dans la chaîne "Hello World 123!". Les lettres sont 'H', 'e', 'l', 'l', 'o', 'W', 'o', 'r', 'l', 'd' (10 au total). Les chiffres sont '1', '2', '3' (3 au total). Les caractères d'espacement sont l'espace entre "Hello" et "World", et l'espace entre "World" et "123" (2 au total). L'autre caractère est '!' (1 au total). Le compte total est 10 + 3 + 2 + 1 = 16, ce qui correspond à la longueur de la chaîne.
En utilisant des méthodes telles que Character.isLetter()
, Character.isDigit()
et Character.isWhitespace()
, vous pouvez écrire un code plus robuste capable de gérer différents types de caractères dans une chaîne. Cela est crucial pour des tâches telles que la validation de données, l'analyse d'entrées ou l'analyse de texte.