记一次 Java 中 isEmpty() 、isBlank()、hasText() 的区别整理

1、commons-lang3
org.apache.commons.lang3.StringUtils

public static boolean isEmpty(final CharSequence cs) {
      return cs == null || cs.length() == 0;
}
public static boolean isBlank(final CharSequence cs) {
    final int strLen = length(cs);
    if (strLen == 0) {
        return true;
    }
    for (int i = 0; i < strLen; i++) {
        if (!Character.isWhitespace(cs.charAt(i))) {
            return false;
        }
    }
    return true;
}

2、spring-core
org.springframework.util.StringUtils

//判断是否为空
public static boolean isEmpty(Object str) {
  return (str == null || "".equals(str));
}
//判断是否由内容
public static boolean hasText(String str) {
  return (str != null && str.length() > 0 && containsText(str));
}

上面两个第三方工具类的中isEmpty()方法判断是否为空,但是会有问题:如果其中存在" "这种字符串的时候,空白字符串是会认为不是空(业务代码中基本上都会把空白字符串处理成空,除非有非常特殊情况)。

isBlank()判断是否为空,处理了" "这种场景。所以如果项目中使用的是org.apache.commons.lang3.StringUtils时,建议使用isBlank()方法。

hasText()方法是判断是否存在内容,也处理了" "这种字符串,但是需要注意hasText()方法的返回值和isBlank()方法返回值是相反的。

3、 isEmpty() 和 isBlank() 比较

import org.apache.commons.lang3.StringUtils;
public class StringUtilDemo {
    public static void main(String[] args) {
        String valueA= "";
        String valueB= " ";
        System.out.println(StringUtils.isEmpty(valueA));
        System.out.println(StringUtils.isEmpty(valueB));
        System.out.println(StringUtils.isBlank(valueA));
        System.out.println(StringUtils.isBlank(valueB));
    }
}

输出

true
false
true
true

4、 isEmpty() 和 hasText() 比较

import org.springframework.util.StringUtils;
public class StringUtilDemo {
    public static void main(String[] args) {
        String valueA= "";
        String valueB= " ";
        System.out.println(StringUtils.isEmpty(valueA));
        System.out.println(StringUtils.isEmpty(valueB));
        System.out.println(StringUtils.hasText(valueA));
        System.out.println(StringUtils.hasText(valueB));
    }
}

输出

true
false
false
false

希望能够对您有所帮助!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值