在Java中与更换单“\\”“\\\\”(Replacing single '\\'

2019-07-17 22:01发布

如何更换一个'\''\\' ? 当我运行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);
    }
}

Answer 1:

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和Settings \\ \\ HUSAIN我的文档\\我的调色板



Answer 2:

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

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


Answer 3:

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



Answer 4:

在字符串中, \必须与另一个进行转义\ 。 而在一个reges,一\也必须由另一个逃脱\\ 。 所以,你必须逃脱每\四次: \\\\

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



Answer 5:

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

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

或者,你可以使用String.replace

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

请参阅: Pattern.quote , 与string.replace和Matcher.quoteReplacement



Answer 6:

文件路径= filePath.replaceAll(Matcher.quoteReplacement( “\”),Matcher.quoteReplacement( “\\”));

这一个完美工作。 文件路径= C:\ ABC \



文章来源: Replacing single '\\' with '\\\\' in Java