如何用下划线替换斜杠

时间:2012-10-09 15:51:23

标签: java

  

可能重复:
  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);
}

6 个答案:

答案 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)