В Java: определение буквы или цифры в строке без regex
Пройдите тест, узнайте какой профессии подходите
Быстрый ответ
Если необходимо выяснить, является ли символ в Java буквой или числом без применения регулярных выражений, можно воспользоваться методами Character.isLetter(char)
и Character.isDigit(char)
:
boolean isLetter = Character.isLetter('A'); // true, 'A' – это буква
boolean isNumber = Character.isDigit('1'); // true, '1' – это цифра
Просто и понятно!

Юникод и Java
Java поддерживает Юникод, поэтому используемые символы не ограничены английской азбукой и могут включать буквы с диакритическими знаками и другие символы:
boolean isLetter = Character.isLetter('ñ'); // true, 'ñ' – определенно не цифра!
Для тех символов, которые могут одновременно быть и буквами, и цифрами, подходит Character.isLetterOrDigit
:
boolean isLetterOrDigit = Character.isLetterOrDigit('8'); // true, это цифра
Проверка символов, специфичных для ASCII
Если ваша работа ограничивается символами ASCII, можно просто проверить символ на принадлежность к определенному диапазону:
char c = 'A';
boolean isASCIILetter = (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z'); // Это, несомненно, буква!
Остерегайтесь битовых операций, они могут привести к неожиданным ошибкам:
boolean isASCIILetter = ((c | 32) – 'a') < 26; // Недостаточно хороший вариант, если важна читаемость кода
Работа с Юникодом
При работе с символами Юникода необходимо учитывать различные блоки символов, что возможно благодаря Character.UnicodeBlock
:
UnicodeBlock block = Character.UnicodeBlock.of('9'); // Вот такой FULLWIDTH_DIGIT
if (block.equals(UnicodeBlock.BASIC_LATIN)) {
// Здесь применимы только ASCII символы
}
Такой подход будет полезен при локализации контента.
Визуализация
Рассматривайте символы как объекты на складе 🏭:
char c = getBoxFromWarehouse(); // Вот это поворот – новые данные! 📦
// Что же внутри?
if (Character.isLetter(c)) {
// Это текстовый элемент 🔧
}
if (Character.isDigit(c)) {
// Или просто числовой объект! 🧸
}
Логика здесь действительно проста, как выбор между просмотром Netflix и учебой 🏭✅!
Идем дальше
Также есть метод Character.isAlphabetic(char)
, который работает даже с буквами специальных алфавитов:
boolean isAlphabetic = Character.isAlphabetic('Ä'); // true, несмотря на наличие диакритического знака
Для выполнения специфических символьных операций полезен Apache Commons Lang с его утилитами, такими как CharUtils.isAscii
:
boolean isAsciiLetter = CharUtils.isAsciiAlpha('B'); // true, как в американской идиоме "apple pie"
Вспомните о контексте: '5' – это цифра, но в шестнадцатеричном представлении 'G' становится частью числа.
Полезные материалы
- Character (Java Platform SE 7 ) — Официальное API Java 7 для класса Character.
- UAX #44: Unicode Character Database — Для тех, кто интересуется деталями Юникода.
- Lang – Home — Apache Commons Lang, для тех, кто глубоко занимается работой с символами.
- Effective Java, 3rd Edition — Быть умным это хорошо, но быть эффективным специалистом лучше.
- JDK 21 Documentation – Home — Следите за обновлениями через официальную документацию Java.