String怎么替换"\"

空白-键 2011-12-12 05:28:05

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)
...全文
867 41 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
41 条回复
切换为时间正序
请发表友善的回复…
发表回复
zmkkobe 2011-12-13
  • 打赏
  • 举报
回复
楼上面邮正解;
空白-键 2011-12-13
  • 打赏
  • 举报
回复
aotian16 2011-12-13
  • 打赏
  • 举报
回复
replaceAll("\t", "_t")可以
不过估计其它的要你自己全部换了
空白-键 2011-12-13
  • 打赏
  • 举报
回复
[Quote=引用 36 楼 beiouwolf 的回复:]

受不鸟了...
你没说清楚啊...
是别人给你的字符串吧?
传给你的字符串是\test
那你获得的字符串存储实际为 \\test
[/Quote]

恩,不好意思,是我没说清楚,我在27楼补充了实际的需求
aotian16 2011-12-13
  • 打赏
  • 举报
回复
自己用String的charAt转换下不知道可以不可以
beiouwolf 2011-12-13
  • 打赏
  • 举报
回复
受不鸟了...
你没说清楚啊...
是别人给你的字符串吧?
传给你的字符串是\test
那你获得的字符串存储实际为 \\test
空白-键 2011-12-13
  • 打赏
  • 举报
回复
[Quote=引用 33 楼 leehomwong 的回复:]

应该是"\\test"
[/Quote]
这个没办法,我能得到的就是\,这个不是我能控制的
hanyu1222 2011-12-12
  • 打赏
  • 举报
回复
[Quote=引用 33 楼 leehomwong 的回复:]

应该是"\\test"
[/Quote]
为什么非要\\,\就不行啊
24K純帥 2011-12-12
  • 打赏
  • 举报
回复
应该是"\\test"
空白-键 2011-12-12
  • 打赏
  • 举报
回复
[Quote=引用 30 楼 orangecount 的回复:]

刚才试了下,你这么整一下,先把获取到的字符串由单\替换为双\\,然后再用
System.out.println(testStr.replaceAll("\\\\", "_"));
[/Quote]
我就是不知道怎么把单\替换为双\\
keyer114 2011-12-12
  • 打赏
  • 举报
回复
你去查一查API帮助文档,好像有方法可以解决这个问题~
橙子伯爵 2011-12-12
  • 打赏
  • 举报
回复
刚才试了下,你这么整一下,先把获取到的字符串由单\替换为双\\,然后再用
System.out.println(testStr.replaceAll("\\\\", "_"));
proorck6 2011-12-12
  • 打赏
  • 举报
回复
测试用例写错了,应该是
"\\test"
龙腾冰 2011-12-12
  • 打赏
  • 举报
回复

public class M
{
public static void main(String[] args)
{
String str = "\\test";
System.out.println(str);
System.out.println(str.replaceAll("\\\\","_"));
}
};
空白-键 2011-12-12
  • 打赏
  • 举报
回复
需求是这样的,有些url有特殊字符,而这些特殊字符在windows的文件名里是不能拥有的,所以要把这样特殊字符都替换成别的字符
比如3g.qq.com:80\forward.jsp,本地的文件名就是3g.qq.com:80_forward.jsp
空白-键 2011-12-12
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 orangecount 的回复:]

传入的参数是什么
传出的参数是什么?
[/Quote]
传入的参数是有“\”的,传出的参数是替换成“_”的
橙子伯爵 2011-12-12
  • 打赏
  • 举报
回复
传入的参数是什么
传出的参数是什么?
空白-键 2011-12-12
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 orangecount 的回复:]

你这个问题以前做过,就用replace就成
你这么写一下
temp = str.replace("")
然后打印temp的值
以前我我做过一个是获取网址,然后再根据网址生成目录,文件,写到tomcat的运行目录中,像你这样的问题就这样就行
[/Quote]
没听明白,能说的详细点吗
橙子伯爵 2011-12-12
  • 打赏
  • 举报
回复
你这个问题以前做过,就用replace就成
你这么写一下
temp = str.replace("")
然后打印temp的值
以前我我做过一个是获取网址,然后再根据网址生成目录,文件,写到tomcat的运行目录中,像你这样的问题就这样就行
五哥 2011-12-12
  • 打赏
  • 举报
回复
replaceAll("\\\\", "_")
加载更多回复(19)

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧