如果字符串中有数字,我如何使用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";
我只是不确定正在使用的正则表达式,也不确定如何将其分成相同大小的块。
答案 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
表示“上一个匹配 - 以前匹配的字符串结束的位置,或者它是否尚不存在(当我们刚开始匹配时) )^
这是字符串的开头“。
因此,正则表达式将匹配任何前面有五位数的地方,之前这五位数字之前匹配的位置。