如何检查字符串是否为非空?

public void doStuff(String str)
{
    if (str != null && str != "**here I want to check the 'str' is empty or not**")
    {
        /* handle empty string */
    }
    /* ... */
}

当前回答

你应该使用org.apache.commons.lang3.StringUtils.isNotBlank()或org.apache.commons.lang3.StringUtils.isNotEmpty。这两者之间的决定是基于您实际想要检查的内容。

isNotBlank()检查输入参数是否为:

非空, 不是空字符串("") 不是空白字符序列(" ")

isNotEmpty()只检查输入参数是否为

非空 不是空字符串("")

其他回答

我知道的几乎每个库都定义了一个名为StringUtils、StringUtil或StringHelper的实用程序类,它们通常包含你正在寻找的方法。

我个人最喜欢的是Apache Commons / Lang,在StringUtils类中,你可以同时得到

StringUtils.isEmpty(字符串)和 StringUtils.isBlank (String)方法

(第一个检查字符串是空的还是空的,第二个检查它是空的,空的还是空白的)

在Spring、Wicket和许多其他库中也有类似的实用程序类。如果不使用外部库,您可能希望在自己的项目中引入一个StringUtils类。


更新:许多年过去了,现在我建议使用Guava的Strings.isNullOrEmpty(string)方法。

在这里添加Android:

import android.text.TextUtils;

if (!TextUtils.isEmpty(str)) {
...
}

根据输入返回true或false

Predicate<String> p = (s)-> ( s != null && !s.isEmpty());
p.test(string);

正如seanizer上面所说,Apache StringUtils在这方面非常出色,如果你要包括guava,你应该做以下工作;

public List<Employee> findEmployees(String str, int dep) {
 Preconditions.checkState(StringUtils.isNotBlank(str), "Invalid input, input is blank or null");
 /** code here **/
}

我还建议您通过名称而不是索引来引用结果集中的列,这将使您的代码更容易维护。

处理字符串中的null更好的方法是,

str!=null && !str.equalsIgnoreCase("null") && !str.isEmpty()

简而言之,

str.length()>0 && !str.equalsIgnoreCase("null")