Apache StringUtils.isBlank(str)与Guava Strings.isNullOrEmpty(str):你应该经常检查空格吗?

时间:2011-09-07 16:10:04

标签: java string apache-commons guava

使用

有什么好处
StringUtils.isBlank(str) 

来自Apache commons-lang。

vs

Strings.isNullOrEmpty(String string)
来自Google Guava的

我希望在Java项目中使用后替换数百个案例:

if(str == null || str.isEmpty())

Guava的isNullOrEmpty似乎是我项目中上述用法的直接替代品。

但是根据我对S.O.的阅读,似乎有更多人使用Apache的isBlank方法。的问题。

除了检查字符串是空还是空之外,唯一的区别似乎是StringUtils.isBlank(str) 还会检查空格

通常情况下检查字符串是否为空白或者是否会在代码中产生与Guava更简单的检查不同的结果?

5 个答案:

答案 0 :(得分:12)

如果你想使用Guava复制isBlank行为,我会改用以下方法:

Strings.nullToEmpty(str).trim().isEmpty()

答案 1 :(得分:8)

当你必须接受来自人类的输入时,如果在特定应用中有意义的话,你应该宽恕并从他们输入的任何文本中删除前导和尾随空格。

也就是说,使用isBlank只是半熟。在进一步处理字符串之前,您还需要trim字符串。因此,我建议您在使用s = trim(s);确认之前使用isNullOrEmpty

答案 2 :(得分:3)

isBlank被高估了。直接从输入字段读取用户文本的UI代码可以一劳永逸地修剪空格,然后您可以不用担心它。

答案 3 :(得分:3)

StringUtils.isBlank(str)Strings.isNullOrEmpty(String string)

非常不同
  

第一个代码示例只会检查字符串是否为空,它也会包含空格并返回true

StringUtils.isBlank(null)      = true 
StringUtils.isBlank("")         = true 
StringUtils.isBlank(" ")        = true 
StringUtils.isBlank("bob")      = false
StringUtils.isBlank("  bob  ")  = false
  

where Strings.isNullOrEmpty(String string)如果给定字符串为null或为空字符串,则返回true

答案 4 :(得分:-5)

Guava或多或少的目标是成为Apache Commons的“下一代”替代品。除了一致地使用isBlank()和isNullOrEmpty()之外,确实没有太大的实际区别。