hutool工具类中StrUtil如何判断一个字符串是否为空,isEmpty和isBlank的区别

简介: hutool工具类中StrUtil如何判断一个字符串是否为空,isEmpty和isBlank的区别

1:引入依赖

<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.8.16</version>
</dependency>

2:使用方法

String name = " ";
        String name = "null";
        String name = "777"
        System.out.println(StrUtil.isBlank(name));
        System.out.println(StrUtil.isEmpty(name));;

3:StrUtil.isBlank( )

作用:该方法会先将字符串去除头尾空格后再进行判断。如果字符串为 null 或者去除头尾空格后的长度为0,则返回 true;否则返回 false。

//CharSequence是一个描述字符串结构的接口  
  public static boolean isBlank(CharSequence str) {
       //初始化一个length  长度变量
        int length;
       // 如果这个字符串不是null, 并且这个字符串的长度不等于0 
        if (str != null && (length = str.length()) != 0) {
            //遍历这个字符串的长度
            for(int i = 0; i < length; ++i) {
            //判断字符串 str 中第 i 个字符是否为空白字符(空格、制表符、换行符等)。
            //具体来说,str.charAt(i) 表示获取 str 中第 i 个字符,
               然后将其与空白字符进行比较,
            //使用了 CharUtil.isBlankChar 方法。
               这个方法是一个自定义的工具类,
               可能实现了一些逻辑来判断一个字符是否为空白字符。
                if (!CharUtil.isBlankChar(str.charAt(i))) {
                    return false;
                }
            }
            return true;
        } else {
            return true;
        }
    }

81f80366bdc2480294b8a7dd44bf8248.png

4:StrUtil.isEmpty( )

作用:该方法会判断字符串是否为 null 或长度为 0。如果是,则返回 true;否则返回 false。

public static boolean isEmpty(CharSequence str) {
        //返回字符串是否为空并且它的长度是否等于 0 
        return str == null || str.length() == 0;
    }

5:两者区别

区别:在于对空格的处理。isEmpty 只判断字符串本身是否为空,而 isBlank 还会将字符串前后的空格给去掉后再判断是否为空。

例如,下面的代码:

String str = "  ";
System.out.println(StrUtil.isEmpty(str));   // 输出结果:false
System.out.println(StrUtil.isBlank(str));   // 输出结果:true

在这个例子中,字符串 str 的内容是两个空格,显然不是空字符串(长度不为 0),但是它是一个空白字符串,即只包含空格。因此,isEmpty 方法返回 false,而 isBlank 方法返回 true


目录
相关文章
|
缓存
银河麒麟server-V10配置镜像源
银河麒麟server-V10配置镜像源
14674 0
|
开发框架 Java 数据库
java----包的命名规范
对包的解释与命名规则
10381 0
java----包的命名规范
安装Xftp7时出现致命错误:-1603的解决方法
安装Xftp7时出现致命错误:-1603的解决方法
1430 0
安装Xftp7时出现致命错误:-1603的解决方法
如何获取Apollo上项目下的所有namespace?
项目配置迁移到Apollo之后,通过统一的配置管理及配置监听使得项目配置修改的成本大大降低。
如何获取Apollo上项目下的所有namespace?
|
消息中间件 SQL 存储
超详细的RabbitMQ入门,看这篇就够了!
RabbitMQ入门,看这篇就够了
217032 68
|
12月前
|
设计模式 算法 数据库连接
后端开发中的设计模式应用与实践
在软件开发的广袤天地中,设计模式如同夜空中最亮的星辰,引领着开发者们穿越复杂系统的迷雾。本文旨在通过深入浅出的方式,不仅探讨设计模式的理论精髓,揭示它们在后端架构中的重要性,还将以生动的实践案例,展示如何在实际项目中巧妙运用这些模式。我们邀请您一同踏上这场编程之旅,探索如何借助设计模式的力量,让后端系统更加健壮、灵活且易于维护,共同揭开后端技术神秘面纱的一角。
|
10月前
|
Ubuntu Linux Docker
Ubuntu22.04上Docker的安装
通过以上详细的安装步骤和命令,您可以在Ubuntu 22.04系统上顺利安装
5691 12
|
SQL 缓存 安全
深入解析MyBatis-Plus LambdaQueryWrapper与QueryWrapper:高效数据查询的秘密
深入解析MyBatis-Plus LambdaQueryWrapper与QueryWrapper:高效数据查询的秘密
13058 2
|
NoSQL 前端开发 Redis
Windows 下安装和配置 Redis (图文教程)
Windows 下安装和配置 Redis (图文教程)
|
SQL 前端开发 关系型数据库
芋道框架万字详解(前后端分离)、若依框架、yudao-cloud保姆级攻略
芋道框架万字详解(前后端分离)、若依框架、yudao-cloud保姆级攻略
16953 4