在每个标点符号之间插入空格

时间:2016-03-18 12:46:55

标签: java regex pattern-matching

我有一个字符串,在每个标点符号之前和之后我想插入一个这样的空格

aaa , bbb . Hello ! here .我尝试使用replaceAll方法,我想要类似的东西:

String result = myStr.replaceAll("\\p{Punct}", "\s\\p{Punct}\s");

但由于第二个参数必须是String,因此不起作用。有没有办法可以使用正则表达式完成?或者我必须单独捕获标点符号然后替换它?

2 个答案:

答案 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 .