JDK中存在以下拆分重载签名
public String[] split(String regex, int limit)
始终我认为该限制是字符串将被拆分的最大标记数。
例如:
System.out.println(Arrays.toString("Andrew Carnegie:35:USA".split(":")));
出局:
[Andrew Carnegie, 35, USA]
System.out.println(Arrays.toString("Andrew Carnegie:35:USA".split(":",2)));
出来
[Andrew Carnegie, 35:USA]
但我注意到1更多的效果
System.out.println(Arrays.toString("Andrew Carnegie:35:USA:".split(":")));
出局:
[Andrew Carnegie, 35, USA]
和
System.out.println(Arrays.toString("Andrew Carnegie:35:USA:".split(":",-1)));
出局:
[Andrew Carnegie, 35, USA, ]
因此,如果字符串以分隔符结尾,则添加一个空元素。
在哪里可以找到有关此效果的具体信息?
引用Johannes Wei:
“当调用String.split(String)时,它调用String.plit(String,0),当用n调用String.split(字符串,n)时,会丢弃后面的空字符串(如文档所说)
从JavaDoc for split
:
限制参数控制应用模式的次数,因此会影响生成数组的长度。如果限制n大于零,则模式最多应用n-1次,数组的长度不大于n,数组的最后一个条目将包含最后匹配分隔符之外的所有输入。如果n为非正,则模式将被应用尽可能多的次数,数组可以有任何长度。如果n为零,则模式将被应用尽可能多的次数,数组可以有任何长度,尾随的空字符串将被丢弃。
强调我的。
所以