如何用Java中的另一个字符替换反斜杠?

时间:2011-12-12 21:17:45

标签: 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

表示给定字符串中的反斜杠未按预期替换为正斜杠。如何实现?

6 个答案:

答案 0 :(得分:8)

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

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

答案 1 :(得分:5)

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

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

答案 2 :(得分:3)

您没有为string分配新值。 请改为string = string.replaceAll("\\\\", "/");

答案 3 :(得分:2)

字符串是不可变的。没有任何意思可以就地修改字符串,每个调用String的方法都会返回一个新的字符串。

在你的代码中,string.replaceAll(...)返回一个String,但你不会将它重新分配给你的“string”变量,所以结果会丢失。 请改用:

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

答案 4 :(得分:1)

java.lang.String是不可变的。 因此,您应该将API调用的结果分配给新变量。

答案 5 :(得分:0)

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

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

     System.out.println(string); 
}