Как проверить, что строка пустая
Короткий ответ
isEmpty() проверяет, что в строке нет символов, isBlank() — что в ней нет ничего, кроме пробелов:
void main() {
IO.println("".isEmpty());
IO.println(" ".isEmpty());
IO.println(" ".isBlank());
}Результат:
true
false
trueСтрока может быть null
У null нельзя вызвать метод, поэтому сначала проверьте ссылку:
boolean isBlank(String text) {
return text == null || text.isBlank();
}
void main() {
IO.println(isBlank(null));
IO.println(isBlank(" \t "));
IO.println(isBlank("Anna"));
}Результат:
true
true
falseЗначение по умолчанию
Часто пустую строку нужно заменить запасным значением:
void main() {
String name = " ";
String shown = name.isBlank() ? "Guest" : name.strip();
IO.println("Hello, " + shown);
}Результат:
Hello, GuestУбрать пустые строки из списка
В потоке отфильтруйте строки через isBlank():
void main() {
var lines = List.of("first", "", " ", "second");
var filled = lines.stream().filter(line -> !line.isBlank()).toList();
IO.println(filled);
}Результат:
[first, second]Частая ошибка
Проверка text.length() == 0 или text.isEmpty() для null выбрасывает исключение:
void main() {
String text = null;
IO.println(text.isEmpty());
}Результат:
Exception in thread "main" java.lang.NullPointerException: Cannot invoke "String.isEmpty()" because "<local1>" is nullПроверяйте text == null первым условием — оператор || не будет вычислять вторую часть.
Функции из этого ответа
- String.isEmpty() — Проверяет, что длина строки равна нулю.
- String.isBlank() — Проверяет, что строка пустая или состоит только из пробелов.
- String.strip() — Удаляет любые пробельные символы Unicode в начале и в конце строки.
- Objects.isNull() — Проверяет значение на null; парный метод nonNull() — наоборот.