StringUtils.isBlank()vs String.isEmpty()

时间:2014-05-02 00:51:04

标签: java string string-utils

我遇到了一些代码如下:

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.isBlankjava.lang.String.isEmpty)?

12 个答案:

答案 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}}。

java.lang.String.isBlank()

java.lang.String.isEmpty()

答案 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