2011-12-12 115 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); 
} 
相關問題