我想用-
替换数字或数字包围的空格。
所以如果我的字符串是I am Bob 12 12
,那么这应该转换为I am Bob 12-12
。
请使用Java
建议一些可能的答案。
答案 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);