Перейти к основному содержимому

Проверка пустых или пустых строк в Java

· 4 мин. чтения

1. Введение

В этом руководстве мы рассмотрим некоторые способы проверки пустых или пустых строк в Java. У нас есть несколько подходов на родном языке, а также пара библиотек.

2. Пустой или пустой

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

Мы считаем строку пустой , если она либо нулевая , либо строка без какой -либо длины. Если строка состоит только из пробелов, мы называем ее пустой .

Для Java пробелы — это такие символы, как пробелы, табуляция и т. д. Взгляните на Character.isWhitespace для примеров.

3. Пустые строки

3.1. С Java 6 и выше

Если мы хотя бы на Java 6, то самый простой способ проверить пустую строку — это String#isEmpty :

boolean isEmptyString(String string) {
return string.isEmpty();
}

Чтобы сделать его также нулевым, нам нужно добавить дополнительную проверку:

boolean isEmptyString(String string) {
return string == null || string.isEmpty();
}

3.2. С Java 5 и ниже

String#isEmpty был представлен в Java 6. Для Java 5 и ниже мы можем вместо этого использовать String#length .

boolean isEmptyString(String string) {
return string == null || string.length() == 0;
}

На самом деле String#isEmpty — это просто сокращение от String#length .

4. Пустые строки

И String#isEmpty , и String#length можно использовать для проверки наличия пустых строк.

Если мы также хотим обнаружить пустые строки, мы можем добиться этого с помощью String#trim . Он удалит все начальные и конечные пробелы перед выполнением проверки.

boolean isBlankString(String string) {
return string == null || string.trim().isEmpty();
}

Чтобы быть точным, String#trim удалит все начальные и конечные символы с кодом Unicode, меньшим или равным U+0020 .

И также помните, что String являются неизменяемыми, поэтому вызов trim фактически не изменит базовую строку.

В дополнение к описанному выше подходу, начиная с Java 11, мы также можем использовать метод isBlank() вместо обрезки :

boolean isBlankString(String string) {
return string == null || string.isBlank();
}

Метод isBlank() также немного более эффективен, так как он не создает новую строку в куче. Из-за этого, если мы используем Java 11 или выше, это предпочтительный подход.

5. Проверка компонентов

Еще один способ проверки пустых строк — регулярные выражения. Это удобно, например, при проверке Java Bean :

@Pattern(regexp = "\\A(?!\\s*\\Z).+")
String someString;

Данное регулярное выражение гарантирует, что пустые или пустые строки не будут проверяться.

6. С Apache Commons

Если можно добавить зависимости, мы можем использовать Apache Commons Lang . У этого есть множество помощников для Java.

Если мы используем Maven, нам нужно добавить зависимость commons -lang3 к нашему pom:

<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>

Среди прочего, это дает нам StringUtils .

Этот класс поставляется с такими методами, как isEmpty , isBlank и т. д.:

StringUtils.isBlank(string)

Этот вызов делает то же самое, что и наш собственный метод isBlankString . Он нулевой, а также проверяет наличие пробелов.

7. С гуавой

Другой известной библиотекой, которая содержит определенные утилиты, связанные со строками, является Guava от Google . Начиная с версии 23.1 существует две разновидности Guava: android и jre . Вариант Android предназначен для Android и Java 7, тогда как вариант JRE предназначен для Java 8.

Если мы не нацелены на Android, мы можем просто добавить JRE в наш pom:

<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>31.0.1-jre</version>
</dependency>

Класс Guavas Strings поставляется с методом Strings.isNullOrEmpty :

Strings.isNullOrEmpty(string)

Он проверяет, является ли заданная строка нулевой или пустой, но не проверяет строки, содержащие только пробелы .

8. Заключение

Есть несколько способов проверить, пуста строка или нет. Часто мы также хотим проверить, является ли строка пустой, то есть состоит ли она только из пробельных символов.

Самый удобный способ — использовать Apache Commons Lang, который предоставляет такие помощники, как StringUtils.isBlank . Если мы хотим придерживаться простой Java, мы можем использовать комбинацию String#trim с String#isEmpty или String#length . Вместо этого для проверки компонентов можно использовать регулярные выражения.

Обязательно ознакомьтесь со всеми этими примерами на GitHub .