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

时间:2013-05-07 11:59:25

标签: java regex split

String s = "10.226.18.158:10.226.17.183:ABCD :AAAA"

我的要求是将字符串分为最多3个:或最多2个:。即

String sa[] = s.split()这样的东西,但正则表达式只分裂到第3或第2。

s[0] = "10.226.18.158"
s[1] = "10.226.17.183"
s[2] = "ABCD :AAAA"

2 个答案:

答案 0 :(得分:5)

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

s.split(":", 3);

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

因此,在您分割到第二个:的示例中,您需要传入3。

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

sa[0] = "10.226.18.158"
sa[1] = "10.226.17.183"
sa[2] = "ABCD :AAAA"

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

  

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

答案 1 :(得分:0)

您可以根据一个非空格字符\S{1}拆分字符串,后跟冒号:

String sa[] = s.split("\\S{1}:");