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

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

当前回答

import android.text.TextUtils;

if (!TextUtils.isEmpty(str)||!str.equalsIgnoreCase("") {
    ...
}

其他回答

检查对象中的所有字符串属性是否为空(而不是按照java reflection api方法对所有字段名使用!=null)

private String name1;
private String name2;
private String name3;

public boolean isEmpty()  {

    for (Field field : this.getClass().getDeclaredFields()) {
        try {
            field.setAccessible(true);
            if (field.get(this) != null) {
                return false;
            }
        } catch (Exception e) {
            System.out.println("Exception occurred in processing");
        }
    }
    return true;
}

如果所有String字段值为空,此方法将返回true;如果String属性中存在任何一个值,则返回false

加上@BJorn和@SeanPatrickFloyd的番石榴方法是:

Strings.nullToEmpty(str).isEmpty(); 
// or
Strings.isNullOrEmpty(str);

Commons Lang有时更具可读性,但我已经慢慢地更多地依赖于Guava,有时Commons Lang在涉及到isBlank()时令人困惑(如什么是空白或不是空白)。

Guava版本的Commons Lang isBlank将是:

Strings.nullToEmpty(str).trim().isEmpty()

我会说,代码不允许“”(空)和null是可疑的,潜在的bug,因为它可能无法处理所有不允许null有意义的情况(尽管对于SQL,我可以理解为SQL/HQL是奇怪的”)。

如果您正在使用Spring Boot,那么下面的代码将完成工作

StringUtils.hasLength(str)

java-11中有一个新方法:String#isBlank

如果字符串为空或只包含空白代码点则返回true,否则返回false。

jshell> "".isBlank()
$7 ==> true

jshell> " ".isBlank()
$8 ==> true

jshell> " ! ".isBlank()
$9 ==> false

这可以与Optional结合起来检查字符串是否为null或空

boolean isNullOrEmpty = Optional.ofNullable(str).map(String::isBlank).orElse(true);

字符串#是空白

使用Apache StringUtils的isNotBlank方法

StringUtils.isNotBlank(str)

只有当str不为空时,它才会返回true。