StringUtils.isBlank 与正则表达式

发布于 2024-10-02 10:35:35 字数 350 浏览 6 评论 0原文

因此,我正在查看一些遗留代码并找到他们执行此操作的实例:

if ((name == null) || (name.matches("\\s*")))
   .. do something

暂时忽略 .matches(..) 调用每次都会创建一个新的模式和匹配器(uhg) - 但是否存在有任何理由不将此行更改为:

if (StringUtils.isBlank(name))
   ..do something

我很确定如果字符串全部是空格,则正则表达式会简单匹配。 StringUtils 会捕获与第一个相同的所有条件吗?

So I am looking through some legacy code and finding instance where they do this:

if ((name == null) || (name.matches("\\s*")))
   .. do something

Ignore for the moment that the .matches(..) call creates a new Pattern and Matcher everytime (uhg) - but is there any reason not to change this line to:

if (StringUtils.isBlank(name))
   ..do something

I'm pretty sure the regex simply matches if the string is all whitespace. Will StringUtils catch all the same conditions as the first one?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

两人的回忆 2024-10-09 10:35:35

是的,StringUtils.isBlank(..) 会做同样的事情,并且是更好的方法。看一下代码:

public static boolean isBlank(String str) {
     int strLen;
     if ((str == null) || ((strLen = str.length()) == 0))
         return true;
     int strLen;
     for (int i = 0; i < strLen; ++i) {
        if (!(Character.isWhitespace(str.charAt(i)))) {
           return false;
        }
     }
   return true;
}

Yes, StringUtils.isBlank(..) will do the same thing, and is a better way to go. Take a look at the code:

public static boolean isBlank(String str) {
     int strLen;
     if ((str == null) || ((strLen = str.length()) == 0))
         return true;
     int strLen;
     for (int i = 0; i < strLen; ++i) {
        if (!(Character.isWhitespace(str.charAt(i)))) {
           return false;
        }
     }
   return true;
}
鸢与 2024-10-09 10:35:35

如果字符串包含零个或多个空白字符,则正则表达式测试是正确的。

不使用正则表达式的优点

  • 正则表达式对很多人来说都是神秘的,这使得它的可读性较差
  • 并且正如您正确地指出的那样 .matches() 具有不小的开销

You are correct the regular expression test's if the string is more zero or more white space characters.

The advantages of not using the regular expression

  • Regular expressions are cryptic to many people, which makes it less readable
  • And as you rightly pointed out .matches() has a non trivial overhead
兮颜 2024-10-09 10:35:35
 /**
 * Returns if the specified string is <code>null</code> or the empty string.
 * @param string the string
 * @return <code>true</code> if the specified string is <code>null</code> or the empty string, <code>false</code> otherwise
 */
public static boolean isEmptyOrNull(String string)
{
    return (null == string) || (0 >= string.length());
}
 /**
 * Returns if the specified string is <code>null</code> or the empty string.
 * @param string the string
 * @return <code>true</code> if the specified string is <code>null</code> or the empty string, <code>false</code> otherwise
 */
public static boolean isEmptyOrNull(String string)
{
    return (null == string) || (0 >= string.length());
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文