Java 如何用下划线替换斜杠
可能重复:Java 如何用下划线替换斜杠,java,Java,可能重复: 为什么“/”不替换为“\ux” 您需要将文件.replaceAll()调用的结果存储为String实例不可变: file = file.replaceAll("/", "_"); 因为java.lang.String的实例是不可变的*replaceAll返回正确的字符串,但程序会将其丢弃。按以下方式更改程序以更正此问题: file = file.replaceAll("/", "_"); *这是一种说“不可更改”的奇特方式:一旦创建了字符串实例“a/B”,就没有方法可以调用
为什么“/”不替换为“\ux”
您需要将
文件.replaceAll()调用的结果存储为String
实例不可变:
file = file.replaceAll("/", "_");
因为java.lang.String
的实例是不可变的*replaceAll
返回正确的字符串,但程序会将其丢弃。按以下方式更改程序以更正此问题:
file = file.replaceAll("/", "_");
*这是一种说“不可更改”的奇特方式:一旦创建了字符串实例“a/B”
,就没有方法可以调用它来更改该值。您必须分配replaceAll的结果:
public static void main(String[] args) throws IOException {
String file = "A/B";
String newFile = file.replaceAll("/", "_");
System.out.println(newFile);
}
因为Java中的字符串是不可变的,所以字符串类的任何方法都不会修改现有字符串,而不仅仅是replaceAll
。。而是创建一个新字符串并返回。。因此,您应该将返回的字符串重新分配给文件
file = file.replaceAll("/", "_");
仔细看:它返回一个字符串
这样的方法不会修改它们的参数。
所以你需要写:
String file = "A/B";
file = file.replaceAll("/", "_");
您应该阅读关于不可变属性的内容
另外,当您只需要replace
时,不要使用replaceAll
。这只是自找麻烦。
file = file.replaceAll("/", "_");
String file = "A/B";
file = file.replaceAll("/", "_");