Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何用下划线替换斜杠_Java - Fatal编程技术网

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("/", "_");