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