2017-08-23 9 views
1

文字列からユニコードを削除しようとしていますが、javaのregexに問題があります。Java - Regex Replace Allは一致するテキストを置き換えません

例のテキスト:

\u2605 StatTrak\u2122 Shadow Daggers

例望ましい結果:

StatTrak Shadow Daggers

私はそれが動作しません持っている現在の正規表現コード:

list.replaceAll("\\\\u[0-9]+",""); 

コードます実行するeがテキストは置き換えられません。他のソリューションを見てから、人々は「\\」の2つだけを使用するように見えるが、4未満のものは私の典型的なエラーがスローされます:私はRegexPlanetFreeFormatterと同様に、オンラインテスト環境における現在の正規表現のソリューションを試してみた

Exception in thread "main" java.util.regex.PatternSyntaxException: Illegal Unicode escape sequence near index 2 \u[0-9]+

をどちらも正しい結果を示します。

ご協力いただければ幸いです。

+0

Checkout https://stackoverflow.com/questions/11020893/java-removing-unicode-characters –

+1

[私のためにうまくいく](https://ideone.com/J5Ni0m)それはあなたの実際のテキストですか?それらのユニコードリテラル? – shmosel

+0

文字列から置き換えようとしていますか?または文字列のリスト?あなたの変数名が 'list'と呼ばれているのに気づいた – shockawave123

答えて

0

私は馬鹿です。私は文字列のreplaceAllを呼び出していましたが、文字列を変更したと思っていたので、割り当てません。

list.replaceAll("\\\\u[0-9]+",""); 

私は必要なもの:

list = list.replaceAll("\\\\u[0-9]+",""); 

結果が、今の助けに感謝を正常に動作します私は以前持っていた何

1

"特殊文字列"を空のStringに置き換えたいとします。私が見る通り、\u2605\u2122POSIX文字クラスです。そのため、これらの印刷可能な文字を ""に置き換えることができます。それから、結果はあなたの期待と同じです。

サンプルは次のようになります。

list = list.replaceAll("\\P{Print}", ""); 

は、このヘルプを願っています。

+0

あなたのアプローチについても説明できますか?一般的な*コードのみの回答よりも役立ちます。 – Zabuza

+0

"特殊文字列"を空のStringに置き換えたいとします。ご覧のとおり、\ u2605と\ u2122はPOSIX文字クラスです。だから私はこれらの印刷可能な文字を ""に置き換えようとしています。結果は同じです。それはあなたのためにはっきりと願っています。 –

+0

今より良い、ありがとう。あなたの答えを編集し、その追加情報を直接その中に含めることはできますか?前もって感謝します。 – Zabuza

1

Javaでは、\u2605のようなものは6文字のリテラルシーケンスではなく、単一のUnicode文字を表します。したがって、"\\\\u[0-9]{4}"というパターンは一致しません。

あなたのパターンは正確に4桁の数字90が、どのようなあなたの文字列であるが続く文字uが続くリテラル文字\を記述するには、Unicodeのコードポイント2605、「ブラックスター」の文字から単一の文字です。

これはちょうど、他のエスケープシーケンスのとおりです。文字列"some\tmore"に何文字\はありませんし、何の文字tはありません...唯一の単一の文字0x09の、タブ文字がある - それはエスケープシーケンスであるため、 Java(および他の言語)には、を表し、リテラル\tが文字列に含まれていないことが判明しました。

Kenny Tai Huynhさんの答えは、印刷しないものを置き換えるのが最も簡単な方法かもしれません。あなたが削除したいものの種類に応じて、またはあなたが望む文字をリストすることができます。 mystring.replaceAll("[^A-Za-z0-9]", "");

+0

私は愚かな間違いをして、変更変数の割り当てを忘れていました。パターンはうまくいきますが、あなたの解決策も役立ちます。 – NeverImageProcess

関連する問題