Apache 的 StringUtils.isBlank(str) vs. Guava 的 Strings.isNullOrEmpty(str):你应该定期检查空格吗?



使用

有什么优势吗?
StringUtils.isBlank(str) 

from Apache commons-lang.

Strings.isNullOrEmpty(String string)

from Google Guava?

我想替换它们在Java项目中的数百种用法:

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

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

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

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

通常检查字符串是否有空白是一个好主意,还是会在代码中产生与Guava更简单的检查不同的结果?

如果您想使用Guava来复制isBlank行为,我将使用以下方法:

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

当您必须接受来自人类的输入时,如果在特定的应用程序中有意义,您应该原谅并从他们输入的任何文本中删除前后空白。

也就是说,使用isBlank只是半生不熟。您还需要在进一步处理字符串之前对它们进行trim处理。所以我建议在检查isNullOrEmpty之前使用s = trim(s);

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 as Strings.isNullOrEmpty(String string)如果给定字符串为null或为空字符串

返回true

isBlank被过分高估了。直接从输入字段读取用户文本的UI代码可以一劳永逸地删除空白,然后您就可以不再担心它了。

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

相关内容

最新更新