StringUtils.isBlank() vs String.isEmpty()

Я столкнулся с некоторым кодом, который имеет следующее:

String foo = getvalue("foo");
if (StringUtils.isBlank(foo))
    doStuff();
else
    doOtherStuff();

Это, по-видимому, функционально эквивалентно следующему:

String foo = getvalue("foo");
if (foo.isEmpty())
    doStuff();
else
    doOtherStuff();

Разница между двумя (org.apache.commons.lang3.StringUtils.isBlank и java.lang.String.isEmpty)?

Ответ 1

StringUtils.isBlank() проверяет, является ли каждый символ строки пробельным символом (или что строка пуста или что она пуста). Это полностью отличается от проверки, является ли строка пустой.

Из связанной документации:

Проверяет, является ли строка пробельным, пустым ("") или пустым.

 StringUtils.isBlank(null)      = true
 StringUtils.isBlank("")        = true  
 StringUtils.isBlank(" ")       = true  
 StringUtils.isBlank("bob")     = false  
 StringUtils.isBlank("  bob  ") = false

Для сравнения StringUtils.isEmpty:

 StringUtils.isEmpty(null)      = true
 StringUtils.isEmpty("")        = true  
 StringUtils.isEmpty(" ")       = false  
 StringUtils.isEmpty("bob")     = false  
 StringUtils.isEmpty("  bob  ") = false

Предупреждение. В java.lang.String.isBlank() и java.lang.String.isEmpty() работают одинаково, за исключением того, что они не возвращают true для null.

java.lang.String.isBlank()

java.lang.String.isEmpty()

Ответ 2

Принятый ответ от @arshajii полностью верен. Однако, просто будучи более явным, говоря ниже,

StringUtils.isBlank()

 StringUtils.isBlank(null)      = true
 StringUtils.isBlank("")        = true  
 StringUtils.isBlank(" ")       = true  
 StringUtils.isBlank("bob")     = false  
 StringUtils.isBlank("  bob  ") = false

StringUtils.isEmpty

 StringUtils.isEmpty(null)      = true
 StringUtils.isEmpty("")        = true  
 StringUtils.isEmpty(" ")       = false  
 StringUtils.isEmpty("bob")     = false  
 StringUtils.isEmpty("  bob  ") = false

Ответ 3

StringUtils isEmpty= String isEmpty проверяет + проверяет нулевое значение.

StringUtils isBlank= StringUtils isEmpty проверяет + проверяет, содержит ли текст только пробельные символы.

Полезные ссылки для дальнейшего изучения:

Ответ 4

StringUtils.isBlank() также будет проверять значение null, тогда как это:

String foo = getvalue("foo");
if (foo.isEmpty())

будет вызывать NullPointerException, если foo имеет значение null.

Ответ 5

StringUtils.isBlank также возвращает true только для пробелов:

isBlank (String str)

Проверяет, является ли строка свободной, пустой ("") или нулевой.

Ответ 6

StringUtils.isBlank(foo) выполнит нулевую проверку. Если вы выполняете foo.isEmpty() и foo равно null, вы создадите исключение NullPointerException.

Ответ 7

StringUtils.isBlank() возвращает true для пробелов (просто пробелов) и для нулевой строки. Фактически он обрезает последовательности Char, а затем выполняет проверку.

StringUtils.isEmpty() возвращает значение true, если в параметре String нет значения charsequence или когда параметр String равен null. Разница в том, что isEmpty() возвращает false, если параметр String содержит только whiltespaces. Он рассматривает пробелы как состояние непустого.

Ответ 8

public static boolean isEmpty(String ptext) {
 return ptext == null || ptext.trim().length() == 0;
}

public static boolean isBlank(String ptext) {
 return ptext == null || ptext.trim().length() == 0;
}

Оба имеют одинаковый код, как isBlank обрабатывает белые пробелы, вероятно, вы имели в виду isBlankString, у этого есть код для обработки пробелов.

public static boolean isBlankString( String pString ) {
 int strLength;
 if( pString == null || (strLength = pString.length()) == 0)
 return true;
 for(int i=0; i < strLength; i++)
 if(!Character.isWhitespace(pString.charAt(i)))
 return false;
 return false;
}

Ответ 9

В Java 11 isBlank() доступен

    String str1 = "";
    String str2 = "   ";
    Character ch = '\u0020';
    String str3 =ch+" "+ch;

    System.out.println(str1.isEmpty()); //true
    System.out.println(str2.isEmpty()); //false
    System.out.println(str3.isEmpty()); //false            

    System.out.println(str1.isBlank()); //true
    System.out.println(str2.isBlank()); //true
    System.out.println(str3.isBlank()); //true

Ответ 10

Единственная разница между isBlank() и isEmpty() заключается в следующем:

StringUtils.isBlank(" ")       = true //compared string value has space and considered as blank

StringUtils.isEmpty(" ")       = false //compared string value has space and not considered as empty

Ответ 11

Я отвечаю на это, потому что это лучший результат в Google для метода String isBlank().

Если вы используете Java 11 или выше, вы можете использовать метод String класса isBlank(). Этот метод делает то же самое, что и класс Apache Commons StringUtils.

Я написал небольшой пост о примерах этого метода, прочитайте его здесь.