在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]
但我注意到了另外一个效果
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, ]
因此,如果字符串以分隔符结束,则添加一个空元素。
我在哪里可以找到有关此效果的具体信息?
答案 0 :(得分:1)
引用JohannesWeiß:
“当调用String.split(String)时,它调用String.split(String,0)并且当使用n&lt调用String.split(String,n)时,它会丢弃尾随空字符串(如文档所说) ; 0它不会丢弃任何东西。“
答案 1 :(得分:0)
来自split
的{{3}}:
limit参数控制模式的次数 应用因此会影响结果数组的长度。如果 限制n大于零,那么模式将应用于 大多数n - 1次,数组的长度不会大于n,并且 数组的最后一个条目将包含除最后一个匹配之外的所有输入 分隔符。 如果n为非正数,则该模式将应用为 尽可能多次,阵列可以有任何长度。如果n为零 那么模式将尽可能多地应用于数组 可以有任何长度,尾随空字符串将被丢弃。
强调我的。
所以,
n
严格为正,那么结果数组中的元素数量将受n
n
为零,则数组可以具有任何长度,并且尾随空格将被丢弃n
严格为负数,那么数组可以有任何长度,并且不会丢弃尾随空格