在java中将字符串拆分为第n个分隔符

Cra*_*gic -3 java regex split

String s = "10.226.18.158:10.226.17.183:ABCD :AAAA"
Run Code Online (Sandbox Code Playgroud)

我的要求是将字符串分为最高3 :或最高2 :.即

有点像String sa[] = s.split(),但正则表达式只分裂到第3或第2.

s[0] = "10.226.18.158"
s[1] = "10.226.17.183"
s[2] = "ABCD :AAAA"
Run Code Online (Sandbox Code Playgroud)

FDi*_*off 5

根据String#split() javadoc,您可以添加一个数字来限制拆分数.

s.split(":", 3);
Run Code Online (Sandbox Code Playgroud)

编辑:作为melwil metions这将返回一个长达数字的数组.

所以在你分裂到第二的例子中,:你需要传入3.

s.split(":",3) 返回输出

sa[0] = "10.226.18.158"
sa[1] = "10.226.17.183"
sa[2] = "ABCD :AAAA"
Run Code Online (Sandbox Code Playgroud)

从java文档引用的关于第二个参数(限制)如何工作的相关部分.

limit参数控制模式的应用次数,因此会影响结果数组的长度.如果限制n大于零,那么模式将最多应用n - 1次,数组的长度将不大于n,并且数组的最后一个条目将包含超出最后匹配分隔符的所有输入.如果n是非正数,那么模式将被应用尽可能多的次数,并且数组可以具有任何长度.如果n为零,那么模式将被应用尽可能多的次数,数组可以具有任何长度,并且将丢弃尾随的空字符串.