验证字符串为空或为空的最佳方法

我敢肯定,以前必须以不同的方式询问过这个问题-

因为isEmptyOrNull很常见,但人们以不同的方式实现它。但是我在最好的可用方法方面有以下好奇的查询,这对内存和性能都有好处。

1)下方不考虑所有空格,例如在XML标签为空的情况下

return inputString==null || inputString.length()==0;

2)低于一保重但修剪会降低性能和记忆力

return inputString==null || inputString.trim().length()==0;

3)将两者结合可以节省一些性能和内存(克里斯在评论中建议)

return inputString==null || inputString.trim().length()==0 || inputString.trim().length()==0;

4)转换为模式匹配器(仅在字符串长度不为零时调用)

private static final Pattern p = Pattern.compile("\\s+");

return inputString==null || inputString.length()==0 || p.matcher(inputString).matches();

5)是否使用诸如Apache

Commons(StringUtils.isBlank/isEmpty)或Spring(StringUtils.isEmpty)或Guava(Strings.isNullOrEmpty)之类的库或其他任何选项?

回答:

还没有看到任何完全本地化的解决方案,所以这里是一个:

return str == null || str.chars().allMatch(Character::isWhitespace);

基本上,使用本机的Character.isWhitespace()函数。从那里,您可以实现不同程度的优化,具体取决于它的重要性(我可以向您保证,在99.99999%的用例中,不需要进一步的优化):

return str == null || str.length() == 0 || str.chars().allMatch(Character::isWhitespace);

或者,要使其达到最佳状态(但非常丑陋):

int len;

if (str == null || (len = str.length()) == 0) return true;

for (int i = 0; i < len; i++) {

if (!Character.isWhitespace(str.charAt(i))) return false;

}

return true;

我喜欢做的一件事:

Optional<String> notBlank(String s) {

return s == null || s.chars().allMatch(Character::isWhitepace))

? Optional.empty()

: Optional.of(s);

}

...

notBlank(myStr).orElse("some default")

以上是 验证字符串为空或为空的最佳方法 的全部内容, 来源链接: utcz.com/qa/400424.html

回到顶部