2011-12-12 212 views
0

我正在尝试下面的代码在Java中,我需要用正斜杠替换反斜杠,但我不能。如何用Java中的另一个字符替换反斜杠?

package superpkg; 
import java.util.regex.Matcher; 

final public class Super 
{ 
    public static void main(String[] args) 
    { 
     String string="xxx\\aaa"; 

     string.replaceAll("\\\\", "/"); 
     System.out.println(string); 

     string.replaceAll(Matcher.quoteReplacement("\\"), "/"); 
     System.out.println(string); 
    } 
} 

在这两种情况下,它显示以下的输出。

xxx\aaa 
xxx\aaa 

意味着给定字符串中的反斜杠不会像预期的那样被正斜杠代替。如何实现?

+0

可能重复(http://stackoverflow.com/questions/1701839/backslash-problem-with-string-replaceall) –

+2

@ringbearer:不,这不是。 – kennytm

+2

@ringbearer:这不是重复的。 –

回答

8

字符串在Java中是不可变的。您需要将结果赋予replaceAll某处:

string = string.replaceAll("\\\\", "/"); 
4

字符串是不可变的,所以你需要做的

string = string.replaceAll("\\\\", "/"); 
3

您还没有分配string其新的价值。 代替它string = string.replaceAll("\\\\", "/");

2

字符串是不可改变的。没有必要就地修改字符串,每个在String上调用的方法都会返回一个新的String。

在你的代码中,string.replaceAll(...)返回一个字符串,但是你不会将它重新分配给你的“字符串”变量,所以结果会丢失。 使用这个来代替:

public class Test { 
public static void main(String[] args) { 
    String string = "xxx\\aaa"; 
    string = string.replace("\\", "/"); 
    System.out.println(string); 
    } 
} 
1

java.lang.String是不可改变的。 因此,您应该将API调用的结果分配给新变量。 [与String.replaceAll反斜杠问题]的

0
public static void main(String[] args) 
{ 
    String string="xxx\\aaa"; 

    string = string.replaceAll("\\\\", "/"); 

    System.out.println(string); 
}