Проверка Java строки на наличие символов, не пробелы

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Чтобы убедиться в наличии символов, отличных от пробелов, в строке на Java, можно воспользоваться методами str.trim().isEmpty() или !str.isBlank(), доступными начиная с Java 11. В качестве альтернативы можно использовать метод StringUtils.isNotBlank(str) из библиотеки Apache Commons Lang. Вот пример их использования:

Java
Скопировать код
boolean isNotEmpty = !str.isBlank(); // с версии Java 11

В предыдущих версиях Java рекомендуется поступить следующим образом:

Java
Скопировать код
boolean isNotEmpty = !str.trim().isEmpty(); //Версии Java 11 и старше
// С использованием Apache Commons Lang
boolean isNotEmpty = StringUtils.isNotBlank(str); // Эффектность и удобство библиотеки

Но не торопитесь закрыть страницу. Давайте более детально изучим эти методы, их возможные альтернативы и уделим внимание ключевым моментам!

Кинга Идем в IT: пошаговый план для смены профессии

Unicode и Regex: мощные инструменты

Метод trim отлично справляется со своей задачей, однако он обладает определенными ограничениями при работе с Unicode. В этом случае к нашим услугам регулярное выражение .*\\S.*:

Java
Скопировать код
boolean hasNonWhiteSpace = str.matches(".*\\S.*"); // Герой без плаща и капюшона!

Однако, перед тем как воспользоваться этим методом, учтите, что работа с регулярными выражениями может повлиять на производительность вашего приложения, поэтому их использование требует осмотрительности.

Null и пустые строки: два лика опасности

NullPointerException может оказаться крайней неприятностью для вашего кода. Отсюда следует правило: всегда проверяйте строки на равенство null, прежде чем применять к ним какие-либо методы:

Java
Скопировать код
boolean isNotEmpty = str != null && !str.trim().isEmpty(); // Null, тебе здесь не место!

Как бонус, метод str.trim() всегда возвращает результат в виде пустой строки или строки без начальных и конечных пробелов. Он никогда не возвращает null.

Потоки (Streams) в Java 8+ для сторонников модерна

Любителям потокового программирования потоки Java 8+ предложат отменные средства для работы со строками:

Java
Скопировать код
boolean hasNonWhiteSpace = str.chars().anyMatch(Character::isWhitespace); // Награда за стильный поток!

Внедрение функционального подхода к обработке строк делает этот процесс более увлекательным и элегантным. Но не забывайте, что работа с потоками может оказаться сложнее, чем кажется на первый взгляд.

Визуализация

Предположим, у нас есть ряд книг (📚="Hello", " ", "World"). Вот как мы отсеиваем пустые строки:

Java
Скопировать код
boolean isEmpty = book.trim().isEmpty(); // 🕵️‍♀️ Пуста ли книга? Возможно, это скрытая дверь!

И вуаля — на полке остаются лишь содержательные издания:

Markdown
Скопировать код
Содержательные издания (👀📚): [ "Hello", "World" ]

Только настоящие литературные произведения, без пустых мест между ними. Задача выполнена на отлично.

StringUtils – незаменимый помощник

Поклонники библиотеки Apache Commons Lang обязательно оценят метод StringUtils.isNotBlank(str). Он справляется лучше, чем trim:

Java
Скопировать код
boolean isNotEmpty = StringUtils.isNotBlank(str); // Швейцарский нож в мире строк!

Этот метод абсолютно не проблематичен при работе с null, пустыми строками и строками, состоящими исключительно из пробелов.

Регулярные выражения — сложно, но привлекательно

Regex — это награда для тех, кто умеет виртуозно оперировать строками. Но стоит помнить, что их использование может негативно отразиться на производительности и читаемости кода. Несмотря на то, что это не самый быстрый метод, он явно один из самых эффектных.

Будьте готовы к непредсказуемым ситуациям, таким как null, пустые строки или строки, заполненные непечатаемыми символами, которые могут стать вызовом для вашей программы.

Символы везде и всюду

Каждый символ уникален, и метод isBlank() из Java 11 учитывает это, осознавая различие между пробелами, табуляцией и символами переноса строки.

Полезные материалы