为什么Java的String.split()拆分字符串时不会保留末尾的空拆分结果?
Java String.split() 末尾空拆分结果丢失原因
你调用的String.split(String regex)是单参数重载方法,它的底层等价于执行split(regex, 0),第二个参数limit的取值直接决定了空拆分结果的保留逻辑,规则如下:
- 当
limit > 0时:拆分最多执行limit-1次,最终数组长度不超过limit,末尾的空拆分结果会完整保留 - 当
limit = 0时:拆分执行尽可能多的次数,但数组末尾所有的空拆分结果都会被丢弃,这就是你遇到的场景 - 当
limit < 0时:拆分执行尽可能多的次数,数组末尾的空拆分结果也会完整保留
另外你示例中写的Strs[0] = " "属于笔误,按你的代码拆分后对应位置的结果应该是空字符串"",不是空格字符。
如果你需要保留hello后方的空拆分结果,只需要把拆分代码修改为:
String[] strs = s.split(" ", -1);
即可得到包含末尾空串的完整拆分结果。
内容的提问来源于stack exchange,提问作者hellowldmaz
相关产品推荐
相关产品推荐

