6

テキスト、制御文字、数字、ウムラウト (ドイツ語)、およびその他の utf8 文字を含む文字列を取得しました。

「言語の一部」ではないすべての utf8 文字を取り除きたい。(完全ではないリスト) ":/\ßä,;\n \t" のような特殊文字はすべて保持する必要があります。

悲しいことに、stackoverflow はこれらの文字をすべて削除するため、画像を追加する必要があります ( link )。

何か案は?助けていただければ幸いです。

PS: 誰かがそれらの特殊文字を殺さない貼り付けサービスを知っていれば、私は喜んで文字列をアップロードします..私はそれを見つけることができませんでした..

[編集]: 正規表現 "\P{Cc}" はすべて保存したい文字だと思います。この正規表現に一致しないすべての文字が返されるように、この正規表現を反転できますか?

4

2 に答える 2

9

Unicode 文字のプロパティは既に見つかりました。

先頭の「p」の大文字と小文字を変更することで、文字プロパティを反転できます

例えば

\p{L}すべての文字に一致

\P{L}プロパティ文字を持たないすべての文字に一致します。

したがって、\P{Cc}必要なものだと思う場合は\p{Cc}、反対に一致します。

詳細については、regular-expressions.infoを参照してください。

私はあなたが望むものに近いと確信\p{Cc}していますが、タブ(0x09)、ラインフィード(0x0A)、キャリッジリターン(0x0D)などを含んでいることに注意してください。

ただし、次のように独自の文字クラスを作成できます。

[^\P{Cc}\t\r\n]

このクラス[^...]は否定文字クラスであるため、「非制御文字」(二重否定であるため、制御文字と一致) 以外のすべてに一致し、タブ、CR、および LF にも一致しません。

于 2013-03-20T10:29:01.227 に答える
0

あなたが使用することができます、

your_string.replaceAll("\\p{C}", "");
于 2013-03-20T10:24:34.993 に答える