我有一个字符串,在每个标点符号之前和之后我想插入一个这样的空格
aaa , bbb . Hello ! here .
我尝试使用replaceAll
方法,我想要类似的东西:
String result = myStr.replaceAll("\\p{Punct}", "\s\\p{Punct}\s");
但由于第二个参数必须是String,因此不起作用。有没有办法可以使用正则表达式完成?或者我必须单独捕获标点符号然后替换它?
答案 0 :(得分:1)
您需要在替换中使用反向引用和文字:
String result = myStr.replaceAll("\\p{Punct}", " $0 ");
或者(如果你想包装一系列标点符号):
String result = myStr.replaceAll("\\p{Punct}+", " $0 ");
请参阅下面的demo:
String s = "aaa,fgh!edrf.";
String result = s.replaceAll("\\p{Punct}", " $0 ");
System.out.println(result); // => aaa , fgh ! edrf .
System.out.println("aaa,,,fgh!!!edrf???".replaceAll("\\p{Punct}+", " $0 "));
// => aaa ,,, fgh !!! edrf ???
答案 1 :(得分:0)
您可以匹配每个标点符号,并替换为" $ 0":
String input = "aaa,bbb.Hello!here.";
String result = input.replaceAll("[.!?\\-]", " $0 ");
System.out.println (result);
输出:
aaa , bbb . Hello ! here .