StringUtils.isBlank() vs String.isEmpty()

2022-08-31 05:05:42

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

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


答案 1

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

警告:在 java.lang.String.isBlank() 和 java.lang.String.isEmpty() 中,工作方式相同,只是它们不会返回 。truenull

java.lang.String.isBlank() (自 Java 11 起)

java.lang.String.isEmpty()


答案 2

@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