检查字符串是否不为null和不为空

bkhjykvo  于 2021-07-03  发布在  Java
关注(0)|答案(30)|浏览(438)

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

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

xxb16uws16#

我会根据您的实际需要建议guava或apache commons。检查我的示例代码中的不同行为:

import com.google.common.base.Strings;
import org.apache.commons.lang.StringUtils;

/**
 * Created by hu0983 on 2016.01.13..
 */
public class StringNotEmptyTesting {
  public static void main(String[] args){
        String a = "  ";
        String b = "";
        String c=null;

    System.out.println("Apache:");
    if(!StringUtils.isNotBlank(a)){
        System.out.println(" a is blank");
    }
    if(!StringUtils.isNotBlank(b)){
        System.out.println(" b is blank");
    }
    if(!StringUtils.isNotBlank(c)){
        System.out.println(" c is blank");
    }
    System.out.println("Google:");

    if(Strings.isNullOrEmpty(Strings.emptyToNull(a))){
        System.out.println(" a is NullOrEmpty");
    }
    if(Strings.isNullOrEmpty(b)){
        System.out.println(" b is NullOrEmpty");
    }
    if(Strings.isNullOrEmpty(c)){
        System.out.println(" c is NullOrEmpty");
    }
  }
}

结果:
Apache:
a为空
b为空
c为空
谷歌:
b是空的
c是空的

g0czyy6m

g0czyy6m17#

检查对象中的所有字符串属性是否为空(而不是使用=遵循java反射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;
}

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

trnvg8h3

trnvg8h318#

使用apache stringutils的isnotblank方法

StringUtils.isNotBlank(str)

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

pexxcrt2

pexxcrt219#

正如seanizer在上面所说的,ApacheStringutils非常适合这个应用,如果您要包括Guava,那么您应该执行以下操作:;

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

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

bxjv4tth

bxjv4tth20#

如果使用spring框架,则可以使用以下方法:

org.springframework.util.StringUtils.isEmpty(@Nullable Object str);

此方法接受任何对象作为参数,将其与null和空字符串进行比较。因此,对于非null非字符串对象,此方法永远不会返回true。

ojsjcaue

ojsjcaue21#

怎么样:

if(str!= null && str.length() != 0 )
slmsl1lt

slmsl1lt22#

你应该使用 org.apache.commons.lang3.StringUtils.isNotBlank() 或者 org.apache.commons.lang3.StringUtils.isNotEmpty . 这两者之间的决定是基于您实际想要检查的内容。
isnotblank()检查输入参数是否为:
不为空,
不是空字符串(“”)
不是空格字符序列(“”)
isnotempty()只检查输入参数是否正确
非空
不是空字符串(“”)

kzmpq1sx

kzmpq1sx23#

在这里添加android:

import android.text.TextUtils;

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

wr98u20j24#

在同一条件中使用空字符串和null测试equals:

if(!"".equals(str) && str != null) {
    // do stuff.
}

不抛出 NullPointerException 如果str为空,因为 Object.equals() 如果arg为 null .
另一个构造 str.equals("") 会把可怕的 NullPointerException . 有些人可能会认为使用字符串文字作为wich上的对象形式不好 equals() 被称为,但它做的工作。
同时检查以下答案:https://stackoverflow.com/a/531825/1532705

kzipqqlq

kzipqqlq25#

几乎我所知道的每个库都定义了一个名为 StringUtils , StringUtil 或者 StringHelper ,它们通常包括您要查找的方法。
我个人最喜欢的是apachecommons/lang,在stringutils类中,您可以同时获得
isempty(字符串)和
isblank(string)方法
(第一个检查字符串是null还是空的,第二个检查字符串是null、空还是只包含空格)
spring、wicket和许多其他lib中都有类似的实用程序类。如果不使用外部库,可能需要在自己的项目中引入stringutils类。
更新:很多年过去了,现在我推荐用Guava Strings.isNullOrEmpty(string) 方法。

wnavrhmk

wnavrhmk26#

isempty()呢?

if(str != null && !str.isEmpty())

一定要使用 && 按照这个顺序,因为如果 && 失败,从而确保不会从 str.isEmpty() 如果 str 为空。
注意,它只在JavaSE1.6之后才可用。你得检查一下 str.length() == 0 在以前的版本上。
也要忽略空白:

if(str != null && !str.trim().isEmpty())

(自java 11以来) str.trim().isEmpty() 可以简化为 str.isBlank() 它还将测试其他unicode空格)
Package 在一个方便的函数中:

public static boolean empty( final String s ) {
  // Null-safe, short-circuit evaluation.
  return s == null || s.trim().isEmpty();
}

变成:

if( !empty( str ) )
wf82jlnq

wf82jlnq27#

我已经创建了自己的实用函数来同时检查几个字符串,而不是让if语句充满 if(str != null && !str.isEmpty && str2 != null && !str2.isEmpty) . 这是函数:

public class StringUtils{

    public static boolean areSet(String... strings)
    {
        for(String s : strings)
            if(s == null || s.isEmpty)
                return false;

        return true;
    }   

}

所以我可以简单地写:

if(!StringUtils.areSet(firstName,lastName,address)
{
    //do something
}
jtw3ybtb

jtw3ybtb28#

我遇到了一种情况,我必须检查“null”(作为字符串)必须被视为空。另外,空格和实际null必须返回true。我终于确定了以下函数。。。

public boolean isEmpty(String testString) {
  return ((null==testString) || "".equals((""+testString).trim()) || "null".equals((""+testString).toLowerCase()));
}
rqcrx0a6

rqcrx0a629#

如果您使用的是springboot,那么下面的代码将完成这项工作

StringUtils.hasLength(str)
bejyjqdl

bejyjqdl30#

在@bjorn和@seanpatrickfloyd中添加Guava的方法是:

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

CommonsLang有时更具可读性,但我一直在慢慢地更多地依赖GuavaPlus,有时CommonsLang会让人困惑 isBlank() (比如什么是空白或不是空白)。
Guava版本的commons lang isBlank 可能是:

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

我会说代码不允许 "" (空)和 null 是可疑的和潜在的缺陷,因为它可能不会处理所有不允许的情况 null 有道理(尽管对于sql,我可以理解为sql/hql很奇怪) '' ).

相关问题