使用
有什么优势吗?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()之间除了一致地使用一个或另一个之外,实际上没有太大的实际区别。