字符串按|分割时末尾空值被忽略的技术问题咨询
解决分割末尾带空值字符串时split忽略空项的问题
这个问题我之前也碰到过,本质是split方法的默认行为在搞鬼!当你调用不带第二个参数的split(regex)时,它会自动丢弃分割后末尾的所有空字符串,这就是为什么"abc|xyz|".split("\\|")只输出abc和xyz,数组长度显示为2而不是预期的3。
解决方案:使用带limit参数的split重载方法
要保留末尾的空字符串,你需要传入第二个参数limit = -1。这个参数的作用是控制分割逻辑:当limit为负数时,split会执行尽可能多的分割,并且保留所有的空字符串(包括末尾的)。
举个Kotlin代码的例子:
// 保留末尾空值的分割执行代码 "abc|xyz|".split("\\|", -1).forEach(::println) // 输出结果: // abc // xyz // (这里会输出一个空行,对应末尾的空字符串) // 查看数组长度 println("abc|xyz|".split("\\|", -1).size) // 输出:3
补充说明split的limit参数规则
- 当
limit = 0(默认行为):分割尽可能多次,丢弃末尾所有空字符串 - 当
limit > 0:最多执行limit-1次分割,数组长度不超过limit - 当
limit < 0:分割尽可能多次,保留所有空字符串(包括末尾的)
内容的提问来源于stack exchange,提问作者sairam chowdary
相关产品推荐
相关产品推荐

