1

次の文字列があります。

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

そうであってほしい

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

それは次のとおりです。

すべての特殊文字の後に 0 個以上のスペースと 1 個以上のピリオドが続くと、特殊文字とスペースに置き換えられます。数字とピリオド2つの場合はスペースのみに置換されます

どうすればいいですか?

4

2 に答える 2

2

\これを試して

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

これは、単語以外の境界が前にある 1 つ以上のスペースまたはピリオドに一致します。これらは、単一のスペースに置き換えられます。

編集

修正された質問に基づいて:

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

数字の後に 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 に答える