java string replaceAll

java string replaceAll

问题描述:

字符串:"c:\java\jre"
怎么用String的replaceAll方法把上述字符串转换为:"c:\java\jre"

这种可以:
String str = "c:\java\jre";
System.out.println("转换前:"+str);
str = str.replaceAll("\\", "\\\\");
System.out.println("转换后:"+str);

注:
(1)c:\java\jre在java代码中的字符串表示形式就是c:\java\jre,其中"\"是特殊字符,
String str = "c:\java\jre";这个代码是通不过编译的;
(2)
String str="c:\java\jre";
str.replace("\","\\");
这种方式可能不对,String.replace方法的第一个参数是个正则表达式,“\”在正则表达式中是特殊字符(这种特殊字符不能单独使用的,后面要跟“.”什么的),同时“\”在java中又是特殊字符,所以,第一个参数为“\\”才能真正代表将要被替换的一个“\”

String str="c:\java\jre"
str.replaceAll("\","\\");

楼上的回答好像是不对的反正我试了下会报错误
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.(Pattern.java:1133)
at java.util.regex.Pattern.compile(Pattern.java:823)
at java.lang.String.replaceAll(String.java:2189)
正确答案应该是下面
String str="c:\java\jre" ;
str=str.replaceAll("\\","\\\\");

             System.out.println(str);

String a="c:\java\jre";
首先就编译不通过。

归根到底,是因为replace方法和replaceAll方法的区别。
String str="c:\java\jre";
str.replace("\","\\");
或者
String str="c:\java\jre" ;
str=str.replaceAll("\\","\\\\");
这两种都可以。

好像你那字符串编译不通过吧