java string replaceAll

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

sun1752709589
NASA66688 我犯了个低级的错误,sorry
大约 7 年之前 回复

6个回答

这种可以:
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中又是特殊字符,所以,第一个参数为“\\”才能真正代表将要被替换的一个“\”

tearhero
tearhero 第二种也是可以的,刚刚没注意到【white_crucifix 】说的是replace,而不是replaceAll,同意white_crucifix
大约 7 年之前 回复

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

zuoshang
zuoshang String str="c:\\java\\jre" 等于 c:\java\jre
大约 7 年之前 回复
sun1752709589
NASA66688 "c:\\java\\jre" 就是我想得到的格式,不能改原始字符串的!再说【String str="c:\\java\\jre" ; str=str.replaceAll("\\\\","\\\\\\\\"); 】相当于str没变啊!
大约 7 年之前 回复

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);
sun1752709589
NASA66688 【"c:\\java\\jre"】就是我想得到的格式,改了它我就不需要变换啦
大约 7 年之前 回复

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

sun1752709589
NASA66688 要编译通过了我就自己解决了
大约 7 年之前 回复

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

sun1752709589
NASA66688 恩,因为在win7下文件路径名就是这种格式的,现在想根据用户输入的路径把它变为双斜杠的,就想到了replaceAll方法,不过我试了,编译出错java.util.regex.PatternSyntaxException: Unexpected internal error near index 1 说replaceAll方法的第一个参数有问题,那要怎么写第一个参数才能把单斜杠全部变为双斜杠的呢???
大约 7 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐