Обработка небуквенных символов
На предыдущем этапе мы использовали метод Character.isUpperCase()
для определения заглавных букв. Однако строки могут содержать не только буквы, но и цифры, символы, пробелы и знаки пунктуации. При анализе строк часто необходимо различать разные типы символов.
Класс Character
предоставляет другие полезные методы для этой цели, такие как:
Character.isLetter(char ch)
: Проверяет, является ли символ буквой.
Character.isDigit(char ch)
: Проверяет, является ли символ цифрой (от 0 до 9).
Character.isWhitespace(char ch)
: Проверяет, является ли символ пробельным (например, пробел, табуляция, новая строка).
Давайте снова модифицируем файл StringCompare.java
, чтобы показать, как обрабатывать небуквенные символы и подсчитывать разные типы символов в строке. Откройте файл ~/project/StringCompare.java
в редакторе и замените его содержимое следующим кодом:
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);
}
}
В этом обновленном коде:
- Мы инициализируем счетчики для букв, цифр, пробельных символов и других символов.
- Внутри цикла мы используем конструкцию
if-else if-else
для проверки типа каждого символа с помощью методов Character.isLetter()
, Character.isDigit()
и Character.isWhitespace()
.
- Мы увеличиваем соответствующий счетчик в зависимости от типа символа.
- В конце мы выводим количество каждого типа символов.
Сохраните файл (Ctrl + S
).
Теперь скомпилируйте и запустите программу в терминале из директории ~/project
:
Скомпилируйте:
javac StringCompare.java
Запустите:
java StringCompare
Вы должны увидеть вывод, похожий на следующий:
Analyzing the string: "Hello World 123!"
Total characters: 16
Letter count: 10
Digit count: 3
Whitespace count: 2
Other character count: 1
Этот вывод правильно определяет и подсчитывает разные типы символов в строке "Hello World 123!". Буквами являются 'H', 'e', 'l', 'l', 'o', 'W', 'o', 'r', 'l', 'd' (всего 10). Цифрами являются '1', '2', '3' (всего 3). Пробельными символами являются пробел между "Hello" и "World" и пробел между "World" и "123" (всего 2). Другим символом является '!' (всего 1). Общее количество равно 10 + 3 + 2 + 1 = 16, что соответствует длине строки.
Используя методы, такие как Character.isLetter()
, Character.isDigit()
и Character.isWhitespace()
, вы можете написать более надежный код, который может обрабатывать различные типы символов в строке. Это очень важно для таких задач, как валидация данных, разбор входных данных или анализ текста.