字符串在Java中是否为空?

字符串在Java中是否为空?,java,string,Java,String,这肯定是以前问过的,但是。在任何标准java库(包括apache/google/…)中,是否存在一个用于字符串的静态isNullOrEmpty()方法?否,这就是为什么许多其他库都有自己的副本:) 或 或 来自Apache empty和blank之间的区别在于:仅由空格组成的字符串是blank,而不是empty 如果可能的话,我通常更喜欢使用apache commons,而不是编写我自己的实用程序方法,尽管这对于像这样的简单方法也是可行的。对于新项目,我已经开始让我编写的每个类都扩展相同的基类

这肯定是以前问过的,但是。在任何标准java库(包括apache/google/…)中,是否存在一个用于
字符串
的静态
isNullOrEmpty()
方法?

否,这就是为什么许多其他库都有自己的副本:)

来自Apache

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


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

对于新项目,我已经开始让我编写的每个类都扩展相同的基类,这样我就可以将Java中令人烦恼的缺失的所有实用程序方法放在这里了,集合的等价物(厌倦了编写list!=null&&!list.isEmpty())、null-safe-equals等。我仍然使用Apache Commons进行实现,但这节省了少量键入,而且我没有看到任何负面影响

我在参与过的项目中多次看到过这种方法,但我不得不说,我自己从来没有写过,也没有称之为。。。通常我发现null和empty是完全不同的条件,我没有理由将它们混为一谈。

您可以添加一个

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;
    }
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; 
}

com.google.common.base.Strings.isNullOrEmpty(String String)
from

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

import com.mysql.jdbc.StringUtils

StringUtils.isNullOrEmpty(主机)


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

如果您正在进行android开发,您可以使用:

TextUtils.isEmpty (CharSequence str) 
在API级别1中添加
如果字符串为null或长度为0,则返回true。

要检查字符串是否包含任何字符,即非null或空格,请检查
StringUtils.hasText
-方法(当然,如果您使用的是Spring)

例如:

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

Yashwant,您不需要返回true和false行:return str==null | | str.trim().length()=0<代码>返回str==null?真:假
-经典的no-no。为什么不
返回str==null
?为什么在可以编写if(str==null)的情况下还要实现第一个方法?请注意第二个方法,这不是雅加达公用程序中的实现方式,主要是因为当您执行“trim”方法时,您正在创建一个新对象,在它们的实现中,它们实际上从一开始就遍历字符串,如果它们找到的不是空格,它们将停止该方法并返回true。它可能更快,而且内存可能更好。这是一件很小的事情,但出于这些原因,最好使用外部库;空白表示“”、null和任意数量的空白;空的只是“”和null。在这种情况下,google方法似乎很清楚New link do Guava doc:创建自己的“通用基类”在很多方面都是有问题的,而且在一种没有多重继承的语言中,这是一种非常有限的设计策略。Java已经有了一个名为Object的通用基类。我可以像那个一样轻松地扩展我的基类。正如我所说,我还没有看到任何问题,但我很想听听潜在的陷阱-也许我会提交一个S/O问题来询问。我在这里没有立场,但我认为限制(“分解”)是如果您的一个类需要从某个库类继承,例如GUI控件等。您的这些类将无法直接继承和使用您的实用程序方法(与Object不同,您的MyObject不是其他所有类的超类)@唐罗比,这就是你的意思吗?只要一个人不依赖于,比如说,MyObject重写Object定义的标准方法,这里有什么特别的危险吗?@JCoombs,是的,这正是我的意思。请看这里的讨论:哥们,这太棒了!这正是我想要避免使用try-catch子句的原因,非常感谢!太爱你了,谢谢你!要添加,
isNullOrEmpty
如果给定字符串只有空格,则返回true。“空”在现实世界中意味着什么?听起来很有趣!实际上它返回false。。。公共静态布尔值isNullOrEmpty(@Nullable String String){return String==null | | | String.length()==0;//String.isEmpty()在Java 6}中是哪个StringUtils?请指定完整的包名。不幸的是,编辑为什么不应该这样做并不是一个答案。