重複の可能性:
java.lang.String.replace 問題のヒント?
Java での string.replace() の使用
「/」が「_」に置き換えられないのはなぜですか?
public static void main(String[] args) throws IOException {
String file = "A/B";
file.replaceAll("/", "_");
System.out.println(file);
}
重複の可能性:
java.lang.String.replace 問題のヒント?
Java での string.replace() の使用
「/」が「_」に置き換えられないのはなぜですか?
public static void main(String[] args) throws IOException {
String file = "A/B";
file.replaceAll("/", "_");
System.out.println(file);
}
のインスタンスjava.lang.String
は不変であるため*。 replaceAll
正しい文字列を返しますが、プログラムはそれを破棄します。問題を修正するには、プログラムを次のように変更します。
file = file.replaceAll("/", "_");
"A/B"
が作成されると、その値を変更するために呼び出すことができるメソッドはありません。
インスタンスは不変であるため、file.replaceAll()
呼び出しの結果を保存する必要があります。String
file = file.replaceAll("/", "_");
replaceAll の結果を割り当てる必要があります。
public static void main(String[] args) throws IOException {
String file = "A/B";
String newFile = file.replaceAll("/", "_");
System.out.println(newFile);
}
file.replaceAll("/", "_");
Java の String はimmutableであるため、だけでなく、String クラスのメソッドはreplaceAll
既存の String を変更しません。代わりに、新しい String を作成してそれを返します。したがって、返された文字列をfile
..
file = file.replaceAll("/", "_");
String.replaceAlljavadocを注意深く見てください。文字列を返します。
このような方法では、パラメータは変更されません。したがって、次のように書く必要があります。
String file = "A/B";
file = file.replaceAll("/", "_");