-2
我想用-
替换由数字或数字包围的空格。Java正则表达式用一个字符替换由数字包围的所有空格
所以如果我的字符串是I am Bob 12 12
这应该转换为I am Bob 12-12
。
请使用Java
建议一些可能的答案。
我想用-
替换由数字或数字包围的空格。Java正则表达式用一个字符替换由数字包围的所有空格
所以如果我的字符串是I am Bob 12 12
这应该转换为I am Bob 12-12
。
请使用Java
建议一些可能的答案。
str = str.replaceAll("(?<=\\d)\\s(?=\\d)", "-");
这看起来为一个数字((?<=\\d)
)之前和之后的一个数字((?=\\d)
)的空间(\\s
),并替换为破折号该空间。
如果要替换连续空格组,请将\\s
更改为\\s+
。
非正则表达式的解决方案:
String in = "I am Bob 12 12";
int last = in.length()-1;
StringBuilder resultBuilder = new StringBuilder();
resultBuilder.append(in.charAt(0)); // assumes, the String has at least one char
for (int i = 1; i < last-1; i++) {
if (in.charAt(i) == ' ' &&
Character.isDigit(in.charAt(i-1)) &&
Character.isDigit(in.charAt(i+1))) {
resultBuilder.append('-');
} else {
resultBuilder.append(in.charAt(i));
}
}
resultBuilder.append(in.charAt(last));
// System.out.println(resultBuilder);
为什么地球上,你会希望有一个“非正则表达式”的解决方案,需要十几行,是不是非常具有可读性,当一个正则表达式的解决方案是非常适合,易于阅读,只需要一行?嘘! – Bohemian 2012-02-27 11:21:57
;)可读性值得单独讨论。就我个人而言,我讨厌看无证正则表达式,并试图找出,作者想告诉我们什么,以及为什么它不与我的示例字符串:D – 2012-02-27 11:32:36