当前位置: 首页 > news >正文

kotlin isEmpty/isNotEmpty/isNullOrEmpty和isBlank/isNotBlank/isNullOrBlank

kotlin 中

isEmpty :如果判断的字符为空返回值返回true否则返回false

它的源码

@kotlin.internal.InlineOnly
public inline fun CharSequence.isEmpty(): Boolean = length == 0

length == 0: 首先检查字符序列的长度是否为 0。如果长度为 0,则表明这个字符序列不包含任何字符,因此被认为是空白的,直接返回 true,(符合java中空字符串的定义,一个长度为0的字符串)

isNotEmpty :如果判断的字符不为空返回值返回true否则返回false

它的源码

@kotlin.internal.InlineOnly
public inline fun CharSequence.isNotEmpty(): Boolean = length > 0

isNullOrEmpty : 如果判断的字符为空或者null返回true否则返回false

它的源码

@kotlin.internal.InlineOnly
public inline fun CharSequence?.isNullOrEmpty(): Boolean {
contract {
returns(false) implies (this@isNullOrEmpty != null)
}

return this == null || this.length == 0
}

看下这个的打印值

val str1: String? = null
Log.d("=======isEmpty", str1?.isEmpty().toString())

写完之后编译器一直提示str1?.isEmpty() is always null ,运行的打印结尾也是null

原因是安全调用操作符 ?. 允许我们在链式调用中安全地访问可空对象的方法或属性,如果对象为 null,则整个表达式的结果也为 null。当 str1 为 null 时,str1?.isEmpty() 不会执行 .isEmpty() 方法,因为 str1 已经是 null,不需要进一步检查其是否为空字符串。

所以有时候根据条件不同选择isNullOrEmpty

列举几个打印为true的

        // 如果判断字符为空返回值返回true否则返回falseLog.d("=======isEmpty", "".isEmpty().toString()) //打印结果为true// 如果判断字符不为空返回值返回true否则返回falseLog.d("=======isNotEmpty", "123".isNotEmpty().toString()) //打印结果为trueval str1: String? = null// 如果为空或者null返回true否则返回falseLog.d("=======isNullOrEmpty", str1.isNullOrEmpty().toString()) //打印结果为true

在说下面的之前看下这个

Log.d("=======isEmpty", " ".isEmpty().toString()) //打印结果为false

isEmpty只关心字符串是否有字符,像这种空白字符,是有长度的所以无法使用isEmpty

isBlank  如果判断的字符为空或者是一个空字符返回true负责返回false

isNotBlank  如果判断的字符不为空或者不是一个空字符返回true负责返回false

isNullOrBlank  如果判断的字符为nul,空或者是一个空字符返回true负责返回false

理解几个打印为true的例子

        // 如果判断的字符为空返回值返回true否则返回falseLog.d("=======isBlank", " ".isBlank().toString()) //打印结果为true// 如果判断字符不为空返回值返回true否则返回falseLog.d("=======isNotBlank", "123".isNotBlank().toString()) //打印结果为trueval str1: String? = null// 如果为空或者null返回true否则返回falseLog.d("=======isNullOrBlank", str1.isNullOrBlank().toString()) //打印结果为true

最后说下空字符与单个空格字符的区别

""这个是空字符串 一个长度为 0 的字符串
“ ”单个空格字符 这是一个只包含一个空白字符(ASCII 码为 32 的字符)的字符串,其长度为 1

http://www.lryc.cn/news/275098.html

相关文章:

  • Qt/QML编程学习之心得:Linux下USB接口使用(25)
  • 概率论与数理统计 知识点+课后习题
  • Spring Boot实战:深入理解@Service与@Mapper注解
  • 【DevOps-06】Jenkins实现CI/CD操作
  • 华为面经总结
  • 大模型实战营Day1 书生·浦语大模型全链路开源体系
  • Java 集合面试题真实场景还原
  • AutoSAR(基础入门篇)4.9-Autoar_BSW小结
  • Winform中使用Websocket4Net实现Websocket客户端并定时存储接收数据到SQLite中
  • Jenkins修改全局maven配置后不生效解决办法、以及任务读取不同的settings.xml文件配置
  • 【elfboard linux开发板】7.i2C工具应用与aht20温湿度寄存器读取
  • LeetCode-有效的字母异位词(242)
  • 【AIGC-图片生成视频系列-6】SSR-Encoder:用于主题驱动生成的通用编码器
  • [C]jupyter中使用C
  • 探讨一下WebINFO 下的一些思考
  • MySQL中的开发基于Python的SQL工具类操作数据库简单示例
  • 安卓Android Studio读写FM1208CPU卡源码
  • 二、Redis的特性与应用场景
  • 编程笔记 html5cssjs 019 HTML实体
  • 数据结构:树详解
  • list1.Sort((m, n) => m.Id - n.Id); id是double类型的为什么回报错
  • GoLang vs Python
  • Hello 2024(A~D,F1)
  • Python+Torch+FasterCNN网络目标检测识别
  • v8 pwn利用合集
  • JVM:字节码
  • 常见网络设备及功能详解
  • Python教程(20)——python面向对象编程基本概念
  • C# Winform教程(一):MD5加密
  • Mongodb使用指定索引删除数据