StringUtils.isBlank() против 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
)?
14 ответов
StringUtils.isBlank()
проверяет, что каждый символ строки является символом пробела (или что строка пуста или что она пуста). Это полностью отличается от проверки, является ли строка пустой.
Из связанной документации:
Проверяет, является ли строка пустым, пустым ("") или пустым.
StringUtils.isBlank(null) = true StringUtils.isBlank("") = true StringUtils.isBlank(" ") = true StringUtils.isBlank("bob") = false StringUtils.isBlank(" bob ") = false
Принятый ответ от @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
StringUtils isEmpty = String isEmpty проверяет + проверяет нулевое значение.
StringUtils isBlank = StringUtils isEmpty проверяет + проверяет, содержит ли текст только пробельные символы.
Полезные ссылки для дальнейшего изучения:
StringUtils.isBlank()
также проверит на ноль, тогда как это:
String foo = getvalue("foo");
if (foo.isEmpty())
бросит NullPointerException
если foo
нулевой.
StringUtils.isBlank
также возвращает true
только для пробелов:
isBlank (String str)
Проверяет, является ли строка пустым, пустым ("") или пустым.
Единственная разница между 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
StringUtils.isBlank(foo)
выполнит для вас нулевую проверку. Если вы выполняете foo.isEmpty()
а также foo
NULL, вы будете вызывать исключение NullPointerException.
StringUtils.isBlank() возвращает true для пробелов (только пробелы), а также для пустой строки. На самом деле он обрезает последовательности Char и затем выполняет проверку.
StringUtils.isEmpty() возвращает true, если в параметре String нет последовательности символов или если параметр String равен нулю. Разница в том, что isEmpty() возвращает false, если параметр String содержит только пробелы. Он рассматривает пробелы как состояние не пустого.
Вместо использования сторонней библиотеки используйте 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
Итог:
isEmpty take " " as a character but isBlank not. Rest both are same.
Вместо использования сторонней библиотеки используйте Java 11 isBlank()
System.out.println("".isEmpty()); //true
System.out.println(" ".isEmpty()); //false
System.out.println(('\u0020'+" "+'\u0020').isEmpty()); //false
System.out.println("".isBlank()); //true
System.out.println(" ".isBlank()); //true
System.out.println(('\u0020'+" "+'\u0020').isBlank()); //true
Если вы хотите использовать Java 8 и вам нужна функция isBlank, попробуйте использовать стороннюю библиотеку org.apache.commons.lang3.StringUtils .
StringUtils.isBlank()
System.out.println(StringUtils.isBlank(null)); //true
System.out.println(StringUtils.isBlank("")); //true
System.out.println(StringUtils.isBlank(" ")); //true
System.out.println(StringUtils.isBlank("bob")); //false
System.out.println(StringUtils.isBlank(" bob ")); //false
StringUtils.isEmpty
System.out.println(StringUtils.isEmpty(null)); // = true
System.out.println(StringUtils.isEmpty("")); //= true
System.out.println(StringUtils.isEmpty(" ")); // = false
System.out.println(StringUtils.isEmpty("foo")); // = false
System.out.println(StringUtils.isEmpty(" foo ")); //= false
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;
}
StringUtils.isBlank(myStr) проверяет, является ли строка myStr пробелом, пустой ("") или нулевой.
Я отвечаю на это, потому что это лучший результат в Google по методу String isBlank().
Если вы используете Java 11 или выше, вы можете использовать метод isBlank() класса String. Этот метод делает то же самое, что и класс Apache Commons StringUtils.
Я написал небольшой пост о примерах этого метода, прочтите его здесь.