【问题标题】:Difference between isEmpty() and zero lengthisEmpty() 和零长度之间的区别
【发布时间】:2013-10-01 21:35:37
【问题描述】:

这两种方法有什么区别?

public boolean nameControl(String str) 
{
    if (str.trim().isEmpty()) return false;
    if (str.trim().length() == 0) return false;
    return true;
}

我需要找出str 至少应该有一个字符。

【问题讨论】:

标签: java string


【解决方案1】:

它们之间没有真正的区别。

isEmpty() 的 Javadocs

当且仅当 length() 为 0 时返回 true。

【讨论】:

    【解决方案2】:

    来自Javadoc

    是空的

    公共布尔 isEmpty()

    当且仅当 length() 为 0 时返回 true。

    【讨论】:

      【解决方案3】:

      对于 Java 6+

      isEmpty()Java 6 开始工作,length == 0 从 Java 1.2+ 或可能更早的版本开始工作。

      如果你注意到,方法的implementation

      Apache Commons Lang(适用于 Java 5+)

      public static boolean isEmpty(String str) 
      

      Apache Commons Lang 中的 org.apache.commons.lang.StringUtils 类使用 str.length() == 0 以支持 Java 5.0+。

      【讨论】:

        【解决方案4】:
        【解决方案5】:

        如果您需要检测一个字符串是否至少有一个(非空白)字符,我会尝试:

        public boolean nameControl(String str) {
            if (str == null) return false;
            else if (str.trim().length() == 0) return false;
            return true;
        }
        

        如果只包含空格的字符串应该返回 true,我将删除 trim,如下所示:

        public boolean nameControl(String str) {
            if (str == null) return false;
            else if (str.length() == 0) return false;
            return true;
        }
        

        【讨论】:

        • 根据定义,任何形式的空格都不是字符吗?
        • 基于原始海报对 trim 的使用,我假设仅包含空格的字符串应返回 false。我已经更新了答案以反映这两种情况。
        【解决方案6】:

        想更新一下:

        我观察到字符串是否有换行符(\n 或 \r),那个时候 length fun 给你的价值不是零,而是 isEmpty fun 脱颖而出 值为 true,这是预期的

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-12-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-08-01
          • 2014-10-03
          相关资源
          最近更新 更多