在Java中用'\\'替换单个'\'

时间:2013-01-06 14:50:10

标签: java regex string patternsyntaxexception

如何将'\'替换为'\\'?当我运行replaceAll()时,我收到此错误消息。

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);
    }
}

6 个答案:

答案 0 :(得分: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 and Settings \ HUSAIN \ My Documents \ My Palettes
  C:\\ Documents and Settings \\ HUSAIN \\ My Documents \\ My Palettes

答案 1 :(得分:10)

\也是regexp中的特殊字符。这就是为什么你应该做这样的事情:

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

答案 2 :(得分:5)

你必须先为\寻找字符串,然后将其视为正则表达式,每个斜杠都为\\\\

答案 3 :(得分:2)

在字符串文字中,必须使用其他\转义\。在reges中,\也必须由另一个\\转义。因此,您必须每隔\四次逃避:\\\\

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

答案 4 :(得分:1)

您可以使用Pattern.quote让您更轻松地转义该值,例如:

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

或者,您可以使用String.replace

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

请参阅:Pattern.quoteString.replaceMatcher.quoteReplacement

答案 5 :(得分:0)

filePath = filePath.replaceAll(Matcher.quoteReplacement(&#34; \&#34;),Matcher.quoteReplacement(&#34; \\&#34;));

这个完美无缺。 filePath = C:\ abc \