Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как проверить, что строка пустая

Короткий ответ

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() — наоборот.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.