Lidar com Caracteres Não-Letras
Na etapa anterior, usamos Character.isUpperCase() para identificar letras maiúsculas. No entanto, strings podem conter mais do que apenas letras – elas podem incluir números, símbolos, espaços e pontuação. Ao analisar strings, é frequentemente necessário distinguir entre diferentes tipos de caracteres.
A classe Character fornece outros métodos úteis para esse fim, como:
Character.isLetter(char ch): Verifica se um caractere é uma letra.
Character.isDigit(char ch): Verifica se um caractere é um dígito (0-9).
Character.isWhitespace(char ch): Verifica se um caractere é um caractere de espaço em branco (como espaço, tabulação, nova linha).
Vamos modificar nosso arquivo StringCompare.java novamente para demonstrar como lidar com caracteres que não são letras e contar diferentes tipos de caracteres em uma string. Abra ~/project/StringCompare.java no editor e substitua seu conteúdo pelo seguinte código:
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);
}
}
Neste código atualizado:
- Inicializamos contadores para letras, dígitos, espaços em branco e outros caracteres.
- Dentro do loop, usamos instruções
if-else if-else para verificar o tipo de cada caractere usando Character.isLetter(), Character.isDigit() e Character.isWhitespace().
- Incrementamos o contador correspondente com base no tipo de caractere.
- Finalmente, imprimimos as contagens para cada tipo de caractere.
Salve o arquivo (Ctrl + S).
Agora, compile e execute o programa no Terminal a partir do diretório ~/project:
Compilar:
javac StringCompare.java
Executar:
java StringCompare
Você deve ver uma saída semelhante a esta:
Analyzing the string: "Hello World 123!"
Total characters: 16
Letter count: 10
Digit count: 3
Whitespace count: 2
Other character count: 1
Esta saída identifica e conta corretamente os diferentes tipos de caracteres na string "Hello World 123!". As letras são 'H', 'e', 'l', 'l', 'o', 'W', 'o', 'r', 'l', 'd' (10 no total). Os dígitos são '1', '2', '3' (3 no total). Os caracteres de espaço em branco são o espaço entre "Hello" e "World", e o espaço entre "World" e "123" (2 no total). O outro caractere é '!' (1 no total). A contagem total é 10 + 3 + 2 + 1 = 16, que corresponde ao comprimento da string.
Ao usar métodos como Character.isLetter(), Character.isDigit() e Character.isWhitespace(), você pode escrever um código mais robusto que pode lidar com vários tipos de caracteres dentro de uma string. Isso é crucial para tarefas como validação de dados, análise de entrada ou análise de texto.