1

我有以下字符串:

See it now! .5..%..off your purchase!.Only today.

我希望它是

See it now! 5% off your purchase! Only today.

这是:

每个特殊字符后跟零个或多个空格和一个或多个句点,将被替换为特殊字符和一个空格。如果是数字和 2 个句点,它将仅替换为空格

我该怎么做?

4

2 回答 2

2

\试试这个

String resultString = subjectString.replaceAll("\\B[ .]+", " ");

这匹配一个或多个以非单词边界开头的空格或句点。然后将它们替换为单个空格。

编辑

基于修改后的问题:

String resultString = subjectString.replaceAll("\\B[ .]+|(\\d)\\.+", "$1 ");

还匹配一个数字后跟一个或多个句点。句点替换为一个空格。

于 2012-12-06T08:43:48.017 回答
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 ");
于 2012-12-06T07:57:58.527 回答