2013-03-20 9 views
5

テキスト、制御文字、数字、ウムラウト(ドイツ語)およびその他のutf8文字を含む文字列があります。文字列からコントロールカー以外の印刷可能なutf8文字を削除します。

「言語の一部」ではないすべてのutf8文字を削除したいと考えています。 (完全でないリスト) ":/ \ßä、; \ n \ t"のような特殊文字はすべて保存されるべきです。

悲しいことに、私は画像(link)を追加する必要があります。

アイデア?ヘルプは非常に高く評価されています!

PS:誰もが..私は喜んで文字列をアップロードするはずの特殊文字を殺さない貼り付けサービスを知っていない場合、私はちょうど1を見つけることができませんでした。..

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

+0

わかりませんが、\ P {something}の逆バージョンが\ p {something}になる可能性があります。そうでない場合は、[^ \ P {何か}]を試してみてください。 – Pshemo

+0

@Pshemo yeah indead小文字は以下のように動作しているようです。ありがとう! – friesoft

+0

[印刷可能なすべての文字をJava文字列から取り除く最速の方法]の可能な複製(http://stackoverflow.com/questions/7161534/fastest-way-to-strip-all-non-printable-characters-from- a-java-string) – Stewart

答えて

8

はすでに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ではなく、

+0

非常に良い!ありがとう私はそれを知りませんでした..私は本当に多くの正規表現のチュートリアルを読む必要がありますね... – friesoft

+0

ああ待っている..これはまた、改行を削除..彼らは保存する必要があります.. – friesoft

+0

@friesoftラインブレーク正規表現は\ r | \ n | \ r \ n'なので、 '\ p {Cc} | \ r | \ n | \ r \ n'はあなたのニーズに合っていなければなりません。 – sp00m

0

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

your_string.replaceAll("\\p{C}", ""); 
+2

あまりにも多く削除しますが、@stemaの答えはすでに動作しています:) – friesoft

関連する問題