2013-01-06 46 views
10

如何用'\\'替换单个'\'?当我运行replaceAll()时,我收到此错误消息。在Java中用'\'替换单个''

Exception in thread "main" java.util.regex.PatternSyntaxException: 
          Unexpected internal error near index 1 \ 
                   ^
    at java.util.regex.Pattern.error(Pattern.java:1713) 
    at java.util.regex.Pattern.compile(Pattern.java:1466) 
    at java.util.regex.Pattern.<init>(Pattern.java:1133) 
    at java.util.regex.Pattern.compile(Pattern.java:823) 
    at java.lang.String.replaceAll(String.java:2190) 
    at NewClass.main(NewClass.java:13) 
Java Result: 1 

我的代码:

public class NewClass { 
    public static void main(String[] args) { 
     String str = "C:\\Documents and Settings\\HUSAIN\\My Documents\\My Palettes"; 
     str = str.replaceAll("\\", "\\\\"); 
     System.out.println(str); 
    } 
} 
+0

尝试用str = str.replaceAll(“^ \\ $”,“”替换'str = str.replaceAll(“\\”,“\\\\”)'^\\\\ $“); ' – Billie

+0

你是什么意思,用'\'替换单个'\'?听起来像一个noop。 –

+0

[String.replaceAll反斜杠问题]的可能重复(http://stackoverflow.com/questions/1701839/backslash-problem-with-string-replaceall) – jlordo

回答

18

String.replaceAll(String,String)是正则表达式。
String.replace(String,String)会做你想做的。

下...

String str = "C:\\Documents and Settings\\HUSAIN\\My Documents\\My Palettes"; 
System.out.println(str); 
str = str.replace("\\", "\\\\"); 
System.out.println(str); 

主要生产...

C:\ Documents和Settings \ HUSAIN \ My Documents \我的调色板
C:\\的Documents and Settings \ \ HUSAIN \\我的文档\\我的调色板

9

\也是正则表达式特殊字符。这就是为什么你应该做这样的事情:

str = str.replaceAll("\\\\", "\\\\\\\\"); 
4

你必须先花葶的\的字符串,然后SCAPE它正则表达式,这将是\\\\每个斜线。

1

在字符串文字中,\必须与另一个\。而在一个地区,\也必须逃脱其他\\。所以,你必须四次跳过每个\\\\\

另一种方法是使用Pattern.quote("\\")(用于正则表达式)和Matcher.quoteReplacement("\\\\")替换字符串。

0

你可以使用Pattern.quote,使你更容易逃避价值,如:

str = str.replaceAll(Pattern.quote("\\"), Matcher.quoteReplacement("\\\\")); 

,或者你可以用String.replace

str = str.replace("\\", "\\\\"); 

见:Pattern.quoteString.replaceMatcher.quoteReplacement

0

filePath = filePath.replaceAll(Matcher.quoteReplacement(“\”),Matcher.quoteReplacement(“\\ “));

这一个完美工作。 filePath = C:\ abc \