Вопрос-ответ

Check whether a String is not Null and not Empty

Проверка, не является ли строка Null и не пустой

Как я могу проверить, не является ли строка null и не пустой?

public void doStuff(String str)
{
if (str != null && str != "**here I want to check the 'str' is empty or not**")
{
/* handle empty string */
}
/* ... */
}
Переведено автоматически
Ответ 1

Как насчет isEmpty() ?

if(str != null && !str.isEmpty())

Обязательно используйте части && в этом порядке, потому что java не продолжит вычислять вторую часть, если первая часть && завершится неудачей, таким образом гарантируя, что вы не получите исключение с нулевым указателем из str.isEmpty() if str is null .

Будьте осторожны, это доступно только начиная с Java SE 1.6. Вы должны проверить str.length() == 0 в предыдущих версиях.


Также игнорировать пробелы:

if(str != null && !str.trim().isEmpty())

(поскольку Java 11 str.trim().isEmpty() может быть сокращен до str.isBlank(), который также будет проверять наличие других пробелов в Юникоде)

Заключена в удобную функцию:

public static boolean empty( final String s ) {
// Null-safe, short-circuit evaluation.
return s == null || s.trim().isEmpty();
}

Становится:

if( !empty( str ) )
Ответ 2

Используйте org.apache.commons.lang.StringUtils

Мне нравится использовать Apache commons-lang для такого рода задач, и особенно служебный класс StringUtils:

import org.apache.commons.lang.StringUtils;

if (StringUtils.isNotBlank(str)) {
...
}

if (StringUtils.isBlank(str)) {
...
}
Ответ 3

Просто добавляю сюда Android:

import android.text.TextUtils;

if (!TextUtils.isEmpty(str)) {
...
}
Ответ 4

Чтобы добавить к @BJorn и @SeanPatrickFloyd Способ Guava для этого:

Strings.nullToEmpty(str).isEmpty(); 
// or
Strings.isNullOrEmpty(str);

Язык Commons иногда более удобочитаем, но я постепенно все больше полагаюсь на Guava, плюс иногда язык Commons сбивает с толку, когда дело доходит до isBlank() (например, что такое пробел или нет).

Версия языка Commons Lang от Guava isBlank будет:

Strings.nullToEmpty(str).trim().isEmpty()

Я скажу, что код, который не разрешает "" (пустой) И null является подозрительным и потенциально глючным в том смысле, что он, вероятно, не обрабатывает все случаи, когда недопустимость null имеет смысл (хотя для SQL я могу понять, поскольку SQL / HQL странный '').

java string