在java中将字符串一分为二的正则表达式
我们需要帮助如何为string.split编写正则表达式,以便将字符串一分为二 谢谢。没有明显的正则表达式模式可以做到这一点。使用在java中将字符串一分为二的正则表达式,java,regex,Java,Regex,我们需要帮助如何为string.split编写正则表达式,以便将字符串一分为二 谢谢。没有明显的正则表达式模式可以做到这一点。使用String.split可以做到这一点,但我只会像这样使用子字符串: String s = "12345678abcdefgh"; final int mid = s.length() / 2; String[] parts = { s.substring(0, mid), s.substring(mid),
String.split
可以做到这一点,但我只会像这样使用子字符串
:
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]"
上述操作将使用部分[1]
将奇数长度字符串拆分为比部分[0]
长一个字符。如果您需要它,那么只需定义mid=(s.length()+1)/2代码>
N部分split
您还可以执行以下操作将字符串拆分为N个部分:
请注意,这有利于较早的部分保留额外的字符,并且在部分数量大于字符数量时也可以使用
附录
在上述代码中:
?:
是条件运算符,也称为三值运算符
/
执行整数除法<代码>1/2==0
%
执行整数余数运算<代码>3%2==1
。另外,-1%2==-1
工具书类
substring()
这对正则表达式来说不是问题。你可以计算字符串的长度,只要按长度/2分开。请用一个例子把你的问题说清楚。@Bart:不错,我应该想到的。虽然我觉得我没有想到这件事很好。我喜欢玩弄正则表达式,但我不想让它成为我的第一本能。@Polygene润滑油,老实说,我原以为你会在你最初的帖子中用这样的话作为开玩笑的解决方案:)+1,简单明了的回答。如果需要更复杂的解决方案,请让OP回答并澄清问题。+1用于通过包括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;
}
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, ]"
int midpoint = str.length() / 2;
String firstHalf = str.substring(0, midpoint);
String secondHalf = str.substring(midpoint);