我遇到了一些代码如下:
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
)?
答案 0 :(得分:253)
StringUtils.isBlank()
检查字符串的每个字符是否为空白字符(或者字符串为空或者为空)。这与检查字符串是否为空完全不同。
来自链接文档:
检查String是否是空格,空("")或null。
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
的{{1}}。
答案 1 :(得分:126)
@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
答案 2 :(得分:37)
StringUtils isEmpty = String isEmpty 检查+检查是否为空。
StringUtils isBlank = StringUtils isEmpty 检查+检查文本是否只包含空格字符。
进一步调查的有用链接:
答案 3 :(得分:13)
StringUtils.isBlank()
也会检查null,而这个:
String foo = getvalue("foo");
if (foo.isEmpty())
如果NullPointerException
为空,将抛出foo
。
答案 4 :(得分:6)
StringUtils.isBlank
也只返回true
空格:
isBlank(String str)
检查字符串是否为空格,为空("")或为空。
答案 5 :(得分:4)
StringUtils.isBlank(foo)
会为您执行空检查。如果执行foo.isEmpty()
并且foo
为null,则会引发NullPointerException。
答案 6 :(得分:2)
StringUtils.isBlank()为空白(只是空格)和null字符串返回true。实际上它会修剪Char序列,然后执行检查。
当String参数中没有charsequence或String参数为null时,StringUtils.isEmpty()返回true。区别在于,如果String参数仅包含空格,则isEmpty()返回false。它将空格视为非空状态。
答案 7 :(得分:2)
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
答案 8 :(得分:1)
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 :(得分:1)
使用Java 11 isBlank()代替使用第三方lib
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 :(得分:0)
底线是:
isEmpty take " " as a character but isBlank not. Rest both are same.
答案 11 :(得分:-2)
我正在回答这个问题,因为它是Google中“ String isBlank()方法”的最高结果。
如果您使用的是Java 11或更高版本,则可以使用String class isBlank()方法。此方法与Apache Commons StringUtils类具有相同的作用。
我已在此方法示例上写了一篇小文章,读为here。