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

我的要求是将字符串拆分为最多 3rd:或最多 2nd :。IE

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

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

2 回答 2

5

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

s.split(":", 3);

编辑:作为 melwil 提到这将返回一个数组,最多包含传入 long 的数字。

因此,在您拆分到 2 的示例中,:您需要传入 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 为零,则该模式将被应用尽可能多的次数,数组可以有任意长度,并且尾随的空字符串将被丢弃。

于 2013-05-07T12:02:42.587 回答
0

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

String sa[] = s.split("\\S{1}:");
于 2013-05-07T12:17:29.243 回答