String testStr = "\test";
System.out.println(testStr.replaceAll("\\", "_"));我想把\test替换成_test,但是按上面的写法运行会报错
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)
字符串里 \\表示一个"\" 但relaceAll里的 第一个参数是一个正则表达式
在正则里 \\\\表示一个"\" 至今我都不明白为什么要这样 呵呵
一个是正则表达式的转义,一个是java语法的转义,双层转义。
不过你测试用test \t 又代表退表符,这就不是斜杠的替换了replaceAll("\t", "_t")
System.out.println(testStr.replaceAll("\\\\", "_"));
e:\record_bak_dir\20110502\09673\2011050200425509673O07712118668.wav
System.out.println(testStr.replaceAll("\\\\", "_"));
这个文本内容不是 \test....
内容是[ est]
自己打印一下看就知道了System.out.println("\test");文本内容\test的写法是 String testStr = "\\test";
相应的替换是testStr.replace("\\\\","_");windows的路径写法本来就不能再java下直接用...没人和你说过斜杠要写正斜杠或者双斜杠吗...
你这个路径是因为正好这个字符串里没碰到转移字符而已...
String temp=str.replaceAll("\\\\", "_t");
System.out.println(temp);
这样会好多啊,还包括一些数字,比如
System.out.println("\201");
打印的结果是: ?
你这么写一下
temp = str.replace("")
然后打印temp的值
以前我我做过一个是获取网址,然后再根据网址生成目录,文件,写到tomcat的运行目录中,像你这样的问题就这样就行
比如3g.qq.com:80\forward.jsp,本地的文件名就是3g.qq.com:80_forward.jsp
public class M
{
public static void main(String[] args)
{
String str = "\\test";
System.out.println(str);
System.out.println(str.replaceAll("\\\\","_"));
}
};
"\\test"
System.out.println(testStr.replaceAll("\\\\", "_"));
你没说清楚啊...
是别人给你的字符串吧?
传给你的字符串是\test
那你获得的字符串存储实际为 \\test
不过估计其它的要你自己全部换了
http://topic.csdn.net/u/20111213/09/faacf560-582d-4918-9c8f-fa2ab59b64d9.html?62675