当前位置: 首页 > 面试题库 >

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

姜淇
2023-03-14
问题内容

我敢肯定,以前必须以不同的方式询问过这个问题-
因为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")


 类似资料:
  • 问题内容: 我是Java新手。无法检查null。你能启发我吗?我有没有元素的字符串数组。 我尝试了这段代码 问题答案: 非常精确 会检查不是。并且将不为空[你也可以放弃该空格检查长度之前修剪。

  • 问题内容: 我在Stream中有Google Guava: 如您所见,过滤器函数内部有一条语句。 我不想在项目中再使用番石榴,所以我只想替换为: 我怎样才能使它更优雅? 问题答案: 您可以编写自己的谓词: 然后,将其用作您的过滤器参数。

  • 我一直在尝试使用Spring Cloud Contract(SCC)进行合同测试,现在尝试将Pact与SCC结合使用,作为使用纯Pact之前的中间步骤。 在我的消费者项目中,我指定了一个简单的合同: SCC验证程序所需的基类: SCC生成的测试: 运行测试会出现以下异常:

  • 我用的是Spring boot Spring Security和Thymeleaf。目前,身份验证和授权工作良好时访问页面,但我不能使thymeleaf授权工作。流程非常简单:我尝试访问admin.html页面,对于该页面,我需要一个“admin”角色。Spring Security正确地截取了请求,首先将我转发到登录页面,当以管理员身份登录时,它允许我继续。 现在我想根据角色“隐藏”管理页面上的

  • 问题内容: 是否可以通过SQL语句确保列的默认值为空字符串而不是? 问题答案: 是-使用DEFAULT约束:

  • 我们使用ArrayList、hashmap等集合&更多。 另外有时候我们也需要检查列表是否为空,所以我们通常会通过以下几种方式进行检查 哪种情况是最好的,或者考虑到程序执行的性能,我们需要将这些情况进行一些组合吗?