2017-05-14 20 views
0

私はString.replaceFirstエラー? Javaの

String s = "2r2"; 
System.out.println(s.replaceFirst("2r2","4")); 

を行うとそれは4を印刷し、動作しますが、私は

String s = "2^2"; 
System.out.println(s.replaceFirst("2^2","4")); 

を行う場合には動作しません(それは^ 2 2を出力)、なぜですか?私は何をしますか?

答えて

5

replaceFirstは、正規表現の構文を使用しています。^は特別な意味を持ちます(使用される修飾語によっては文字列または行の先頭を表します)。

"2\\^2"のように^をエスケープするか、より簡単に使用するためにPattern.quote("2^2")を使用する必要があります。 ^文字は特別な意味を持っている正規表現で

String s = "2^2"; 
System.out.println(s.replaceFirst(Pattern.quote("2^2"),"4")); 
2

、:

だからあなたのコードでは、より多くのようにする必要があります。これは行の先頭に一致します。

代わりにs.replaceFirst("2\\^2","4")を使用してください。バックスラッシュは、特別な意味を与えるのではなく、^を通常の文字として扱うことを意味します。