Java String类split方法分割时丢弃末尾空条目问题咨询
Java split() 方法末尾空字符串丢失原因
Java String.split() 的单参数重载默认会丢弃字符串末尾所有连续的空字符串,该行为是官方定义的正常逻辑,并非bug。
核心规则说明
- Java 提供了两个
split()重载方法:- 单参数
split(String regex):等价于split(regex, 0),会保留字符串中间的空字符串,但完全丢弃末尾所有连续的空字符串,这就是示例中索引6、7的空字符串丢失的原因。 - 双参数
split(String regex, int limit):可通过调整limit参数控制拆分逻辑:- limit > 0:最多拆分出limit个元素,最后一个元素包含剩余所有未拆分的内容
- limit = 0:和单参数方法行为一致,丢弃末尾空字符串
- limit < 0:不限制拆分次数,保留所有位置的空字符串(包括末尾的空字符串)
- 单参数
修复示例
如果要保留示例2中末尾的两个空字符串,修改代码如下:
String[] parts = "a.b.c...d...".split("\\.", -1); for ( int i = 0; i < parts.length; i++ ) System.out.println("" + i + ": '" + parts[i] + "'" );
修改后的输出会包含所有位置的结果:
0: 'a' 1: 'b' 2: 'c' 3: '' 4: '' 5: 'd' 6: '' 7: ''
内容的提问来源于stack exchange,提问作者Big Guy
相关产品推荐
相关产品推荐

