我有以下字符串:
See it now! .5..%..off your purchase!.Only today.
我希望它是
See it now! 5% off your purchase! Only today.
这是:
每个特殊字符后跟零个或多个空格和一个或多个句点,将被替换为特殊字符和一个空格。如果是数字和 2 个句点,它将仅替换为空格
我该怎么做?
\试试这个
String resultString = subjectString.replaceAll("\\B[ .]+", " ");
这匹配一个或多个以非单词边界开头的空格或句点。然后将它们替换为单个空格。
编辑
基于修改后的问题:
String resultString = subjectString.replaceAll("\\B[ .]+|(\\d)\\.+", "$1 ");
还匹配一个数字后跟一个或多个句点。句点替换为一个空格。
这应该有效:
String resultString = subjectString.replaceAll(
"(?x) # verbose regex \n" +
"(\\p{P}) # Match and capture a punctuation character \n" +
"\\ * # Match zero or more spaces \n" +
"\\. # Match a dot", "$1 ");