日期:2014-05-20  浏览次数:21275 次

String怎么替换"\"
Java code

String testStr = "\test";
System.out.println(testStr.replaceAll("\\", "_"));


我想把\test替换成_test,但是按上面的写法运行会报错

Java code

Exception in thread "main" java.util.regex.PatternSyntaxException: Unexpected internal error near index 1
\
 ^
    at java.util.regex.Pattern.error(Unknown Source)
    at java.util.regex.Pattern.compile(Unknown Source)
    at java.util.regex.Pattern.<init>(Unknown Source)
    at java.util.regex.Pattern.compile(Unknown Source)
    at java.lang.String.replaceAll(Unknown Source)
    at lmiky.test.string.SubStringTest.main(SubStringTest.java:101)



------解决方案--------------------
replaceAll("\\\\", "_")
------解决方案--------------------
楼上正解 
字符串里 \\表示一个"\" 但relaceAll里的 第一个参数是一个正则表达式
在正则里 \\\\表示一个"\" 至今我都不明白为什么要这样 呵呵
------解决方案--------------------
走错了
------解决方案--------------------
探讨

楼上正解
字符串里 \\表示一个"\" 但relaceAll里的 第一个参数是一个正则表达式
在正则里 \\\\表示一个"\" 至今我都不明白为什么要这样 呵呵

------解决方案--------------------
\t 是转义字符吧 你的写法就是错的 要写成str="\\test"
------解决方案--------------------
普通情况下 是replaceAll("\\\\", "_")的
不过你测试用test \t 又代表退表符,这就不是斜杠的替换了

replaceAll("\t", "_t")


------解决方案--------------------
或者写成 

String testStr = "\\test";
System.out.println(testStr.replaceAll("\\\\", "_"));
------解决方案--------------------
汗,我没测试过,想当然了。\t你写的不对,要\\t

String testStr = "\\test";
System.out.println(testStr.replaceAll("\\\\", "_"));
------解决方案--------------------
那这样你考虑的就多了 \n \r \t \e 这一类的都是转义字符 按String 截取的时候还要照顾各种情况。
------解决方案--------------------
String testStr = "\test";
这个文本内容不是 \test....
内容是[ est]
自己打印一下看就知道了System.out.println("\test");

文本内容\test的写法是 String testStr = "\\test";
相应的替换是testStr.replace("\\\\","_");

windows的路径写法本来就不能再java下直接用...没人和你说过斜杠要写正斜杠或者双斜杠吗...
你这个路径是因为正好这个字符串里没碰到转移字符而已...
------解决方案--------------------
这样可以把"\"替换成"_t"
Java code

        String str="d:\\test\\test.wav";
        String temp=str.replaceAll("\\\\", "_t");
        System.out.println(temp);

------解决方案--------------------
探讨

引用:

String testStr = "\test";
这个文本内容不是 \test....
内容是[ est]
自己打印一下看就知道了System.out.println("\test");

文本内容\test的写法是 String testStr = "\\test";
相应的替换是testStr.replace("\\\\……

------解决方案--------------------