2012-10-09 83 views

回答

4

由于java.lang.String实例是不可变的*replaceAll返回正确的字符串,但您的程序将其扔掉。改变你的程序如下,以解决此问题:

file = file.replaceAll("/", "_"); 


*这是说:“不可更改”的一个奇特的方式:一旦创建一个字符串实例 "A/B",没有方法,您可以调用就可以改变这个价值。

3

你需要存储file.replaceAll()调用的结果为String实例是不可变:

file = file.replaceAll("/", "_"); 
1

你必须指定的replaceAll的结果:

public static void main(String[] args) throws IOException { 
    String file = "A/B"; 
    String newFile = file.replaceAll("/", "_"); 
    System.out.println(newFile); 
} 
1
file.replaceAll("/", "_"); 

,因为字符串在Java是不变,所以String类的任何方法,不仅仅是replaceAll,不修改现有的字符串..而是他们创建一个新的字符串并返回..所以你应该重新分配返回的字符串到file ..

file = file.replaceAll("/", "_"); 
0

仔细看看String.replaceAll javadoc:它返回一个字符串。

这样的方法不会修改它们的参数。 所以,你需要写:

String file = "A/B"; 
file = file.replaceAll("/", "_");