Я столкнулся с некоторым кодом, который имеет следующее:
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.
Я написал небольшой пост о примерах этого метода, прочитайте его здесь.