我遇到了一些代码,有以下:

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)之间有区别吗?


当前回答

StringUtils.isBlank()检查字符串中的每个字符是否为空白字符(或者字符串为空或为空)。这与仅仅检查字符串是否为空完全不同。

从链接的文档:

检查字符串是否为空白、空("")或空。 StringUtils.isBlank(null) = true StringUtils.isBlank("") = true stringutil的。isBlank(" ") = true StringUtils.isBlank("bob") = false stringutil的。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()中,除了它们不为null返回true外,它们的工作原理是一样的。

Java .lang. string . isblank()(自Java 11起)

朗。java字符串isEmpty()。

其他回答

@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.isBlank()检查字符串中的每个字符是否为空白字符(或者字符串为空或为空)。这与仅仅检查字符串是否为空完全不同。

从链接的文档:

检查字符串是否为空白、空("")或空。 StringUtils.isBlank(null) = true StringUtils.isBlank("") = true stringutil的。isBlank(" ") = true StringUtils.isBlank("bob") = false stringutil的。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()中,除了它们不为null返回true外,它们的工作原理是一样的。

Java .lang. string . isblank()(自Java 11起)

朗。java字符串isEmpty()。

stringutil的。isBlank对于空格也返回true:

isBlank (String str) 检查字符串是否为空白、空("")或空。

我回答这个问题是因为它是谷歌的“字符串isBlank()方法”的顶部结果。

如果使用Java 11或以上版本,可以使用String类isBlank()方法。这个方法的作用与Apache Commons StringUtils类相同。

我已经写了一个关于这个方法的例子的小帖子,在这里阅读。

而不是使用第三方lib,使用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