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"
答案 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}:");