JavaのString.replaceとString.replaceAllの違い
※ 2014年01月23日
ごろに書いた記事です(消そうと思いましたが懐かしいので残しておく)
replaceでは引数に指定した文字をそのまま置き換えるが、 replaceAllでは引数に指定した文字を正規表現と見なして置き換える。
例えば、以下のようなコードでは、
String str = "abc.def."; System.out.println("Result: " + str.replace(".", "1")); System.out.println("Result: " + str.replaceAll(".", "1"));
出力は
Result: abc1def1 Result: 11111111
となる。正規表現で"."は任意の文字にマッチする意味を持つので、 正規表現を使うreplaceAllではすべての文字が変換されている。
replace,replaceAllを使う時はこの点に注意しておこう。
ちなみに、replaceAllを使いたい時に"."にマッチさせたい場合には"\."を使えばよい