Java

JavaのString.replaceとString.replaceAllの違い

More than 5 years have passed since last update.

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を使いたい時に"."にマッチさせたい場合には"\."を使えばよい