pol*_*nts 21
没有明显的正则表达式可以做到这一点.这可能是可能的做到这一点String.split,但我只是用substring这样的:
String s = "12345678abcdefgh";
final int mid = s.length() / 2;
String[] parts = {
s.substring(0, mid),
s.substring(mid),
};
System.out.println(Arrays.toString(parts));
// "[12345678, abcdefgh]"
Run Code Online (Sandbox Code Playgroud)
上面将分裂一个奇数长度String,part[1]一个字符长于part[0].如果您需要反过来,那么只需定义mid = (s.length() + 1) / 2;
split您也可以执行以下操作将字符串拆分为N部分:
static String[] splitN(String s, final int N) {
final int base = s.length() / N;
final int remainder = s.length() % N;
String[] parts = new String[N];
for (int i = 0; i < N; i++) {
int length = base + (i < remainder ? 1 : 0);
parts[i] = s.substring(0, length);
s = s.substring(length);
}
return parts;
}
Run Code Online (Sandbox Code Playgroud)
然后你可以这样做:
String s = "123456789";
System.out.println(Arrays.toString(splitN(s, 2)));
// "[12345, 6789]"
System.out.println(Arrays.toString(splitN(s, 3)));
// "[123, 456, 789]"
System.out.println(Arrays.toString(splitN(s, 5)));
// "[12, 34, 56, 78, 9]"
System.out.println(Arrays.toString(splitN(s, 10)));
// "[1, 2, 3, 4, 5, 6, 7, 8, 9, ]"
Run Code Online (Sandbox Code Playgroud)
请注意,这有利于较早的部分来保存额外的字符,并且当部件的数量超过字符数时它也有效.
在上面的代码中:
?: 是条件运算符,也就是三元运算符./执行整数除法.1 / 2 == 0.%执行整数余数运算.3 % 2 == 1.还有-1 % 2 == -1.你真的不需要正则表达式.只是用substring().
int midpoint = str.length() / 2;
String firstHalf = str.substring(0, midpoint);
String secondHalf = str.substring(midpoint);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10275 次 |
| 最近记录: |