可能重复:
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 是不可变的,所以String 类的任何方法,不仅仅是replaceAll
,都不会修改现有的 String 。而是他们创建一个新的 String 并返回它。所以你应该将返回的字符串重新分配给file
..
file = file.replaceAll("/", "_");
仔细查看String.replaceAll javadoc:它返回一个字符串。
像这样的方法不会修改它们的参数。所以你需要写:
String file = "A/B";
file = file.replaceAll("/", "_");