为何Kotlin中"Hello ".split(" ")会生成含两个元素的列表?
为什么Kotlin中"Hello ".split(" ")会返回包含空元素的列表?
其实这是Kotlin的split函数不同重载版本的行为差异导致的。
你用的是字符串作为分隔符的split重载,它底层基于正则表达式逻辑拆分字符串。看你的代码示例:
val arr = "Hello ".split(" ") println("size = ${arr.size}") // size 2 println(arr) // [Hello, ]
字符串"Hello "的末尾带一个空格,用" "作为分隔符拆分时,正则匹配会保留分隔符前后的所有内容:空格前面的"Hello"是第一个元素,空格后面的空内容就成了第二个元素。
如果想去掉这类空元素,有几种实用的处理方式:
- 改用字符类型的分隔符,这个版本的
split会自动丢弃末尾的空元素:val arr = "Hello ".split(' ') // 输出结果:[Hello] - 在
split之后直接过滤掉空元素(如果有多个分隔符导致中间也出现空元素,这种方法更稳妥):val arr = "Hello ".split(" ").filterNot { it.isBlank() } // 输出结果:[Hello]
内容的提问来源于stack exchange,提问作者Orbit
相关产品推荐
相关产品推荐

