【问题标题】:String isNullOrEmpty in Java? [duplicate]Java中的字符串isNullOrEmpty? [复制]
【发布时间】:2011-01-17 08:21:10
【问题描述】:

这肯定有人问过,但是Googling doesn't find it。在任何标准 Java 库(包括 apache/google/...)中,是否有用于 Strings 的静态 isNullOrEmpty() 方法?

【问题讨论】:

    标签: java string


    【解决方案1】:

    来自 Apache commons-lang

    emptyblank 的区别在于:仅由空格组成的字符串是 blank 而不是 empty

    如果可能,我通常更喜欢使用 apache-commons,而不是编写自己的实用程序方法,尽管这对于像这样的简单方法也是合理的。

    【讨论】:

    【解决方案2】:

    如果你是做android开发的,可以使用:

    TextUtils.isEmpty (CharSequence str) 
    

    在 API 级别 1 中添加 如果字符串为 null 或 0 长度,则返回 true。

    【讨论】:

    • 哥们太棒了!这正是我想要避免使用 try catch 子句的方法,非常感谢!
    • 非常感谢 - 谢谢!
    【解决方案3】:

    com.google.common.base.Strings.isNullOrEmpty(String string) 来自Google Guava

    【讨论】:

    • 添加,如果给定的字符串只有空格,isNullOrEmpty 确实返回 true。 “空”在现实世界中是什么意思?对我来说听起来很有趣!
    • 其实返回false... public static boolean isNullOrEmpty(@Nullable String string) { return string == null || string.length() == 0; // Java 6 中的 string.isEmpty() }
    【解决方案4】:

    不,这就是为什么这么多其他图书馆都有自己的副本:)

    【讨论】:

      【解决方案5】:

      你可以添加一个

      public static boolean isNullOrBlank(String param) { 
          return param == null || param.trim().length() == 0;
      }
      

      我有

      public static boolean isSet(String param) { 
          // doesn't ignore spaces, but does save an object creation.
          return param != null && param.length() != 0; 
      }
      

      【讨论】:

        【解决方案6】:

        检查一个字符串是否有任何字符,即。不是 null 或空格,请检查 StringUtils.hasText-method(当然如果您使用的是 Spring)

        例子:

        StringUtils.hasText(null) == false
        StringUtils.hasText("") == false
        StringUtils.hasText(" ") == false
        StringUtils.hasText("12345") == true
        StringUtils.hasText(" 12345 ") == true
        

        【讨论】:

        【解决方案7】:

        除了其他答案之外,我还遇到了这个问题,因为我主要是 C# 程序员,但试图在 Java 中保持新鲜感。我注意到,当我尝试使用 StringUtils 时,我的 IDE(Eclipse)从 com.mysql.jdbc.StringUtils 导入它,它实际上有一个 isNullOrEmpty(myStringObject) 方法。

        例如

        import com.mysql.jdbc.StringUtils;

        StringUtils.isNullOrEmpty(host)

        对于那些已经在您的项目中引用 MySQL 连接器而不是其他 StringUtils 库的人来说,这只是另一种选择。

        【讨论】:

          【解决方案8】:
          public static boolean isNull(String str) {
                  return str == null ? true : false;
              }
          
              public static boolean isNullOrBlank(String param) {
                  if (isNull(param) || param.trim().length() == 0) {
                      return true;
                  }
                  return false;
              }
          

          【讨论】:

          • Yashwant,你不需要 return true,return false 行:return str==null || str.trim().length()==0;
          • return str == null ? true : false; - 经典的禁忌。为什么不return str == null
          • 既然可以写 if (str == null),为什么还要实现第一个方法?
          • 只是关于第二种方法的注释,这不是在 Jakarta commons 中实现的方式,主要是因为当您执行“trim”方法时,您正在创建一个新对象,并且在它们的实现中它们实际上从头开始遍历字符串,如果他们发现除了空格之外的任何其他内容,他们将停止该方法并返回 true。它可能更快,并且可能在内存上更好。这是一件小事,但出于这些原因,最好使用外部库。
          【解决方案9】:

          我已经在我参与的项目中看到过这种方法写了几次,但我不得不说我自己从来没有写过它,或者也没有调用过它......通常我发现 null 和 empty 是完全不同的条件而且我没有理由将它们混为一谈。

          【讨论】:

          • 不幸的是,编辑为什么不应该这样做并不是一个答案。
          【解决方案10】:

          对于新项目,我已经开始让我编写的每个类都扩展同一个基类,在那里我可以放置 Java 中令人讨厌的所有实用方法,就像这个一样,相当于集合(厌倦了写列表!= null && !list.isEmpty())、null-safe equals 等。我仍然使用 Apache Commons 来实现,但这节省了少量的输入,而且我没有看到任何负面影响。

          【讨论】:

          • 创建自己的“通用基类”在许多方面都存在问题,并且在没有多重继承的语言中是一种非常有限的设计策略。
          • Java 已经有一个名为 Object 的通用基类。我可以像扩展我的基类一样容易。就像我说的,我还没有看到任何问题,但我有兴趣了解潜在的陷阱 - 也许我会提交一个 S/O 问题来询问它。
          • 我不在这里采取立场,但我认为限制(“分解”)将是如果 您的 类之一需要从某些 继承library 类,例如 GUI 控件等。您的这些类将无法直接继承和使用您的实用程序方法(与 Object 不同,您的 MyObject 不是其他所有人类的超类)。 @DonRoby,这就是你的意思吗?这里是否存在特定的危险,只要不依赖于,例如,MyObject 覆盖 Object 定义的标准方法?
          • @JCoombs,是的,这就是我的意思。
          猜你喜欢
          • 2012-03-31
          • 2012-03-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-07-21
          • 2011-04-17
          • 2013-11-05
          相关资源
          最近更新 更多