在 Java 中将单个"\"替换为"\\"



如何将单个''替换为'\'? 当我运行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);
    }
}

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:\文档和设置\侯赛因\我的文档\我的调色板
C:\\文档和设置\\侯赛因\\我的文档\\我的调色板

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

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

您必须首先对字符串的进行转义,然后为正则表达式对其进行转义,每个斜杠都会\\

在字符串文本中,必须使用另一个进行转义。而在雷格斯中,一个也必须被另一个\逃脱.因此,您必须每逃脱四次:\\ .

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

您可以使用

Pattern.quote来更轻松地转义该值,例如:

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

或者,您可以只使用String.replace

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

请参阅:Pattern.quote、String.replace 和 Matcher.quoteReplace

filePath = filePath.replaceAll(Matcher.quoteReplacement("\"), Matcher.quoteReplacement("\\"));

这个效果很好。

OUTPUT:
filePath = C:abc

最新更新