3

通常、文字列から単語以外の文字を削除するには、次のreplaceAllメソッドを使用できます。

String cleanWords = "some string with non-words such as ';'".replaceAll("\\W", "");

上記は、クリーンアップされた文字列「somestringwithnonwordssuchas」を返します。

ただし、文字列にキリル文字が含まれている場合、それらは非単語として認識され、文字列から削除されます。キリル文字が残ることが予想されます。したがって、質問。

文字列にUTF-8エンコーディングがあると仮定して、言語に関係なく単語以外の文字を削除するタスクを処理する適切な方法は何ですか?

4

1 に答える 1

7

試してみてください[^\\p{L}]。これは、文字を除くすべてのUnicodeコードポイントと一致する必要があります。

Patternクラスには、可能な文字クラスのかなり徹底的な説明があります。POSIX文字クラスはデフォルトでASCIIのみであり、あまり役に立たないことに注意してください。Unicode固有のクラスを使用する必要があります。

Unicode標準のこのセクションに準拠するようにPOSIXクラスの動作を変更するUNICODE_CHARACTER_CLASSフラグがあることに注意してください(基本的に、最も近いUnicode対応の同等のものと同等になります)。

于 2012-08-23T08:24:08.950 に答える