2012-02-25 15 views
2

これは私が達成しようとしているものの単なるコード例です。私が使用する理由Java replaceallは大文字と小文字を無視します

String s = "hello(1234aA)something"; 
String replaceString = "(1234aa)"; 
String s2 = s.replaceAll("(i?)" + replaceString, "something"); 

ザ・文字列は同じであることを行っているが、場合には異なる可能性があり、でReplaceAllで(私?)のthats。 正規表現を無視するにはどうすればいいですか?

+1

あなたの意見では、交換後のs2の外観はどうなりますか? –

+0

は、ここでコードを編集しましたが、私はまだ動作しません。 – Jonas

+0

置換文字列の先頭に "\\ Q"、最後に "\\ E"を使用して修正する方法が見つかりました。 – Jonas

答えて

3

quote()を使用すると、既に無視されているケースがわかりましたが、(i?)ではなく(i?)を使用する必要があります。

String s = "hello(1234aA)something"; 
String replaceString = "(?i)" + Pattern.quote("(1234aa)"); 
String s2 = s.replaceAll(replaceString, "something"); 

これは動作するはずです。

+0

'quote()'メソッドは、最初と最後に "\ Q"と "\ E"を追加する以外の方法はありませんが、APIで特に定義されている場合は常にメソッドを使用する方が良いこのケースでは、尋問者はすでに正しい軌道に乗っていました。 –

関連する問題