2017-01-11 13 views
-1

英数字でないか、ユーザーが入力した特殊文字リストに属していない文字列のすべての文字を置き換えたいと思います。 FILENAME2の値が残っているいくつかの理由replaceAllが正規表現で動作していないようです

String pagePath = "/content/geo/en/tool"; 
String specialCharacters = "\\:*?\"<>|#"; 
String fileName = pagePath.replaceAll("[^\\p{IsAlphabetic}^\\p{IsDigit}\\:*?\"<>|#]", replacer); //This works fine o/p: ~content~geo~en~tool 

String test2 = "\"[^\\p{IsAlphabetic}^\\p{IsDigit}" + specialCharacters + "]\""; 
String fileName2 = pagePath.replaceAll(test2, replacer); 

、/コンテンツ/地理/ EN /ツール

誰かが間違っているもので私を助けてくださいことはできますか?

+2

あなたは 'test2'(おそらく自動的にIDEでエスケープ)の開始と終了時' "'余分を持つ2つの正規表現ではない理由を確認します。 – Pshemo

+0

コピー貼りの誤植として閉じようとする投票 – Pshemo

+0

BTW '^'は文字クラス '[.. ..]'の先頭でのみ否定を表します。中には単純なリテラルとして扱われます – Pshemo

答えて

3

test2に引用符をエスケープする必要はありません:

String test2 = "[^\\p{IsAlphabetic}^\\p{IsDigit}" + specialCharacters + "]"; 
+1

誤ったコピー・ペースト領域などの誤植に起因する質問は、OP以外の誰も助けることができません。これは、スタックオーバーフローに関するトピック外であることを意味します。私はそれが簡単な評判のポイントのように見えることを知っていますが、ある時点で、そのような質問は、負のバランスであなたを残すかもしれない評判と一緒に削除される大きなチャンスを持っています。ある日に。だから答えを投稿するのではなく、OPがそれを削除するコメントをコメントとして投稿することができます(upvoted/acceptの回答がない限り)。 – Pshemo

+0

正直言って、それを最初の誤植とは考えなかった。 – lukeg

+0

私はOPが故意にそれを置くのではないかと疑います。しかし、多くのIDEはコピー貼り間違いを示唆する文字列を貼り付けるときに自動的にエスケープします。これは誤植の例です。 – Pshemo

関連する問題