【Java】replaceで置換されない原因を調べる
この記事では、Javaのreplaceで置換されない原因について解説します。
Javaのreplaceメソッドで置換されない場合は、以下の点を確認すれば解消できると思います。
正規表現で置換しようとしている場合
正規表現で置換しようとする場合、replaceメソッドでは置換されないためreplaceAllを使用する必要があります。
replace | 文字列を検索して条件に一致する部分をすべて置換する |
replaceAll | 文字列を検索して条件に一致する部分をすべて置換する※正規表現使用可能 |
String str = "12345"; System.out.println(str.replace("[0-9]","Z")); System.out.println(str.replaceAll("[0-9]","Z")); 実行結果 12345 ZZZZZ
replaceメソッド正規表現を使用できないため、該当文字が無く置換されていません。
値を受け取っていない場合
上の実行結果では置換されていましたが、以下の場合は値が変わっていません。
String str = "12345"; str.replaceAll("[0-9]","Z"); System.out.println(str); 実行結果 12345
String型は不変のオブジェクトのため、値は変更できないため変更を反映させるためにはstr=str.replace(“t”, “T”);とし、値を受け取る必要があります。
String str = "12345"; str = str.replaceAll("[0-9]","Z"); System.out.println(str); 実行結果 ZZZZZ
Javaの記事の一覧はJava にまとめてあります