将字符串拆分为数组的n长度元素

时间:2014-03-09 15:06:54

标签: java regex arrays string

如果字符串中有数字,我如何使用String.split()将字符串拆分成相等的部分?例如,下面的每个部分都是5号。

"123" would be split into "123"
"12345" would be split into "12345"
"123451" would be split into "12345" and "1"
"123451234512345" would be split into "12345", "12345" and "12345"
etc

这些将被放入一个数组中:

String myString = "12345678";
String[] myStringArray = myString.split(???);
//myStringArray => "12345", "678";

我只是不确定正在使用的正则表达式,也不确定如何将其分成相同大小的块。

1 个答案:

答案 0 :(得分:7)

你可以试试这种方式

String input = "123451234512345";
String[] pairs = input.split("(?<=\\G\\d{5})");
System.out.println(Arrays.toString(pairs));

输出:

[12345, 12345, 12345]

此正则表达式使用positive look behind机制(?<=...)\\G表示“上一个匹配 - 以前匹配的字符串结束的位置,或者它是否尚不存在(当我们刚开始匹配时) )^这是字符串的开头“。

因此,正则表达式将匹配任何前面有五位数的地方,之前这五位数字之前匹配的位置。