可能重复:
Hints for java.lang.String.replace problem?
Using string.replace() in Java
为什么“/”不会被“_”取代?
public static void main(String[] args) throws IOException {
String file = "A/B";
file.replaceAll("/", "_");
System.out.println(file);
}
答案 0 :(得分:4)
因为java.lang.String
的实例是不可变的 * 。 replaceAll
返回正确的字符串,但是您的程序将其抛弃。如下更改您的程序以更正问题:
file = file.replaceAll("/", "_");
<小时/> * 这是一种说“不可更改”的奇特方式:一旦创建了字符串实例
"A/B"
,就没有可以调用它来改变该值的方法。
答案 1 :(得分:3)
您需要存储file.replaceAll()
调用的结果,因为String
实例是不可变的:
file = file.replaceAll("/", "_");
答案 2 :(得分:1)
您必须分配replaceAll的结果:
public static void main(String[] args) throws IOException {
String file = "A/B";
String newFile = file.replaceAll("/", "_");
System.out.println(newFile);
}
答案 3 :(得分:1)
file.replaceAll("/", "_");
因为,Java中的String是不可变的,所以 String类的任何方法,而不仅仅是replaceAll
,不会修改现有的String。相反,它们创建一个新的String并返回..所以你应该将返回的字符串重新分配给file
..
file = file.replaceAll("/", "_");
答案 4 :(得分:0)
仔细查看String.replaceAll javadoc:它返回一个字符串。
这样的方法不会修改它们的参数。 所以你需要写:
String file = "A/B";
file = file.replaceAll("/", "_");
答案 5 :(得分:0)