Java Regular Expression用字符替换数字包围的所有空格

时间:2012-02-27 10:54:14

标签: java regex

我想用-替换数字或数字包围的空格。

所以如果我的字符串是I am Bob 12 12,那么这应该转换为I am Bob 12-12

请使用Java建议一些可能的答案。

2 个答案:

答案 0 :(得分:5)

str = str.replaceAll("(?<=\\d)\\s(?=\\d)", "-");

这会查找以数字(\\s)开头,后跟数字((?<=\\d))的空格((?=\\d)),并用短划线替换该空格。

如果您想要替换连续空格组,请将\\s更改为\\s+

答案 1 :(得分:0)

非正则表达式解决方案:

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);