StringUtils.isBlank()vs String.isEmpty()

NSA*_*NSA 184 java string string-utils

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

String foo = getvalue("foo");
if (StringUtils.isBlank(foo))
    doStuff();
else
    doOtherStuff();
Run Code Online (Sandbox Code Playgroud)

这看起来在功能上等同于以下内容:

String foo = getvalue("foo");
if (foo.isEmpty())
    doStuff();
else
    doOtherStuff();
Run Code Online (Sandbox Code Playgroud)

两者(org.apache.commons.lang3.StringUtils.isBlankjava.lang.String.isEmpty)之间有区别吗?

ars*_*jii 324

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

从链接的文档:

检查String是否是空格,空("")或null.

 StringUtils.isBlank(null)      = true
 StringUtils.isBlank("")        = true  
 StringUtils.isBlank(" ")       = true  
 StringUtils.isBlank("bob")     = false  
 StringUtils.isBlank("  bob  ") = false
Run Code Online (Sandbox Code Playgroud)


nil*_*esh 132

@arshajii接受的答案是完全正确的.然而,只是通过下面的说法更明确,

StringUtils.isBlank()

 StringUtils.isBlank(null)      = true
 StringUtils.isBlank("")        = true  
 StringUtils.isBlank(" ")       = true  
 StringUtils.isBlank("bob")     = false  
 StringUtils.isBlank("  bob  ") = false
Run Code Online (Sandbox Code Playgroud)

StringUtils.isEmpty

 StringUtils.isEmpty(null)      = true
 StringUtils.isEmpty("")        = true  
 StringUtils.isEmpty(" ")       = false  
 StringUtils.isEmpty("bob")     = false  
 StringUtils.isEmpty("  bob  ") = false
Run Code Online (Sandbox Code Playgroud)


yal*_*lam 39

StringUtils isEmpty = String isEmpty检查+检查null.

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

进一步调查的有用链接:


chu*_*hut 14

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

String foo = getvalue("foo");
if (foo.isEmpty())
Run Code Online (Sandbox Code Playgroud)

将抛出一个NullPointerExceptionif foo为null.

  • 有比这更大的差异; 看到我的回答. (4认同)
  • 这是不正确的。如果为null,则String.isEmpty()将返回true。至少如果您正在谈论apache.commons.lang版本。我不确定春季版本。 (3认同)
  • 楚特的回答是正确的。如果 java String foo 为 null,则 foo.isEmpty() 抛出 NullPointerException。即使 foo 为 null,apache StringUtils.isBlank(foo) 也会返回 true。 (2认同)

Def*_*ult 6

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


Oct*_*ami 6

StringUtils.isBlank也返回true只是空格:

isBlank(String str)

检查String是否是空格,空("")或null.


小智 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
Run Code Online (Sandbox Code Playgroud)


小智 5

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

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