劈裂Java中的字符串高达第n个分隔符
String s = "10.226.18.158:10.226.17.183:ABCD :AAAA"
我的要求是字符串在分头3 :
或最多2次:
。即劈裂Java中的字符串高达第n个分隔符
类似String sa[] = s.split()
,但与正则表达式分裂只能达到第3或第2。
s[0] = "10.226.18.158"
s[1] = "10.226.17.183"
s[2] = "ABCD :AAAA"
根据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为零 那么该模式将尽可能多地应用,数组 可以具有任何长度,并且尾随的空字符串将被丢弃。
可以谨慎的指出,拆分不会发生在第N个分隔符处,而是将结果数组限制为N的长度。在's.split(“:”,3);'中,它将拆分到第二个分隔符,导致大小为3的数组。 – melwil 2013-05-07 13:13:34
您可以分割你的字符串立足于一个非whitespece字符,\S{1}
,后跟一个冒号,:
:
String sa[] = s.split("\\S{1}:");
只是把它分解并连接元素0和1之后剩余的元素? – NilsH 2013-05-07 12:02:01
看起来你正在拆分多组IP地址,混合使用IPv4和IPv6?你是否也只是需要这个字符串,还是有一个模式,看起来像这样? – melwil 2013-05-07 12:32:31