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 .