如何将'\'
替换为'\\'
?当我运行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);
}
}
答案 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("\\", "\\\\");
答案 5 :(得分:0)
filePath = filePath.replaceAll(Matcher.quoteReplacement(&#34; \&#34;),Matcher.quoteReplacement(&#34; \\&#34;));
这个完美无缺。 filePath = C:\ abc \