验证字符串为空或空的最佳方法

2022-09-01 05:35:31

我敢肯定,这一定以不同的方式被问过 - 因为EmptyOrNull是如此普遍,但人们以不同的方式实现它。但我在下面好奇的查询方面,就最佳可用方法而言,这对内存和性能都有好处。

1)下面没有考虑所有空格,例如在空XML标签的情况下

return inputString==null || inputString.length()==0;

2)下面一个小心,但修剪可以吃一些性能+记忆

return inputString==null || inputString.trim().length()==0;

3)结合一个和两个可以节省一些性能+内存(正如克里斯在评论中建议的那样)

return inputString==null || inputString.trim().length()==0 || inputString.trim().length()==0;

4) 转换为模式匹配器(仅当字符串长度非零时才调用)

private static final Pattern p = Pattern.compile("\\s+");

return inputString==null || inputString.length()==0 || p.matcher(inputString).matches();

5)使用像 - Apache Commons()或Spring()或Guava()或任何其他选项这样的库?StringUtils.isBlank/isEmptyStringUtils.isEmptyStrings.isNullOrEmpty


答案 1

来自Apache Commons的有用方法:

 org.apache.commons.lang.StringUtils.isBlank(String str)

https://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/StringUtils.html#isBlank(java.lang.String)


答案 2

若要检测字符串是否为 null 或为空,可以使用以下命令,而无需在项目上包含任何外部依赖项,并且仍保持代码简单/干净:

if(myString==null || myString.isEmpty()){
    //do something
}

或者,如果还需要检测空格:

if(myString==null || myString.trim().isEmpty()){
    //do something
}

您可以轻松地将这些内容包装到实用程序方法中以使其更加简洁,因为这些是非常常见的检查:

public final class StringUtils{

    private StringUtils() { }   

    public static bool isNullOrEmpty(string s){
        if(s==null || s.isEmpty()){
            return true;
        }
        return false;
    }

    public static bool isNullOrWhiteSpace(string s){
        if(s==null || s.trim().isEmpty()){
            return true;
        }
        return false;
    }
}

然后通过以下方式调用这些方法:

if(StringUtils.isNullOrEmpty(myString)){...}

if(StringUtils.isNullOrWhiteSpace(myString)){...}