289

我遇到了一些具有以下内容的代码:

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

4

12 回答 12

539

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

从链接的文档中:

检查字符串是否为空格、空 ("") 或 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.null

java.lang.String.isBlank()(从 Java 11 开始)

java.lang.String.isEmpty()

于 2014-05-02T00:54:59.180 回答
157

@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
于 2017-03-31T21:42:03.963 回答
49

StringUtils isEmpty = String isEmpty检查 + 检查是否为空。

StringUtils isBlank = StringUtils isEmpty检查 + 检查文本是否仅包含空白字符。

进一步调查的有用链接:

于 2014-09-26T13:13:51.463 回答
18

StringUtils.isBlank()还将检查 null,而这个:

String foo = getvalue("foo");
if (foo.isEmpty())

将抛出一个NullPointerException如果foo为空。

于 2014-05-02T00:53:03.573 回答
8

StringUtils.isBlanktrue只返回空格:

isBlank(字符串字符串)

检查字符串是否为空格、空 ("") 或 null。

于 2014-05-02T00:54:55.177 回答
6

StringUtils.isBlank(foo)将为您执行空检查。如果您执行foo.isEmpty()并且foo为空,您将引发 NullPointerException。

于 2014-05-02T00:53:13.473 回答
6

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
于 2019-09-08T10:06:14.760 回答
5

StringUtils.isBlank() 为空白(仅空格)和空字符串返回 true。实际上它会修剪 Char 序列,然后执行检查。

当 String 参数中没有字符序列或 String 参数为 null 时,StringUtils.isEmpty() 返回 true。不同之处在于,如果 String 参数仅包含空格,则 isEmpty() 返回 false。它将空格视为非空状态。

于 2015-02-11T15:15:31.970 回答
4

不使用第三方库,而是使用 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
于 2019-08-13T01:00:40.507 回答
2
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;
}
于 2016-04-13T07:47:22.897 回答
1

底线是 :

isEmpty take " " as a character but isBlank not. Rest both are same.
于 2021-02-23T10:48:50.980 回答
-4

我正在回答这个问题,因为它是“String isBlank() Method”在 Google 中的最高结果。

如果您使用的是 Java 11 或更高版本,则可以使用String 类的 isBlank()方法。此方法与 Apache Commons StringUtils 类做同样的事情。

我已经写了一篇关于这种方法示例的小帖子,请在此处阅读。

于 2019-07-29T10:02:55.877 回答