黑马程序员技术交流社区

标题: 替换路径时为什么replaceAll("\\\\")才可以? [打印本页]

作者: Shey    时间: 2015-3-14 22:08
标题: 替换路径时为什么replaceAll("\\\\")才可以?
我试过replaceAll("\\")不行,网上只说了方法没有说原因,谁来帮助下,谢谢

作者: 小七的    时间: 2015-3-15 02:01
因为\为转义字符,只输入两个\相当于一个转义字符一个\,所以需要输入四个\,才能达到你想要的效果,如同想输入英文状态下的“必须在“前加一个\是一样的道理
作者: Rorine    时间: 2015-3-15 03:13
转义这个概念在老师的视频里有说的吧
作者: Shey    时间: 2015-3-15 07:14
小七的 发表于 2015-3-15 02:01
因为\为转义字符,只输入两个\相当于一个转义字符一个\,所以需要输入四个\,才能达到你想要的效果,如同想 ...

可是我输入的路径是url="D:\QQMusicCache"
代码url.replaceAll("\\","/")报错
url.replaceAll("\\\\","/");才可以啊
作者: Shey    时间: 2015-3-15 07:15
Rorine 发表于 2015-3-15 03:13
转义这个概念在老师的视频里有说的吧

可是我输入的路径是url="D:\QQMusicCache"
代码url.replaceAll("\\","/")报错
url.replaceAll("\\\\","/");才可以啊
作者: hamesksk    时间: 2015-3-15 10:49
二个 \\ 代表一个 \ ,转意
作者: 小七的    时间: 2015-3-15 11:10
Shey 发表于 2015-3-15 07:14
可是我输入的路径是url="D:\QQMusicCache"
代码url.replaceAll("\\","/")报错
url.replaceAll("\\\\","/" ...

就是啊,你输入的这四个第一个和第三个是转义字符,就是将它们后面跟着的转义字符转化成实际意义上的反斜线的,这样说明白么
作者: z47057554    时间: 2015-3-15 11:12
那两个都是字符,你不要用字符串就好了,你可以用replaceAll('\\', '/');
用字符串时,'\\'相当于一个\,对比'\t',就是一个制表字符,你想要表示两个\\组成的字符串就需要"\\\\"=""+'\\'+'\\';
作者: Shey    时间: 2015-3-15 11:57
小七的 发表于 2015-3-15 11:10
就是啊,你输入的这四个第一个和第三个是转义字符,就是将它们后面跟着的转义字符转化成实际意义上的反斜 ...

还是有点不明白,上面只有一个\啊,不过还是谢谢哈
作者: Shey    时间: 2015-3-15 11:58
z47057554 发表于 2015-3-15 11:12
那两个都是字符,你不要用字符串就好了,你可以用replaceAll('\\', '/');
用字符串时,'\\'相当于一个\,对 ...

可是只有一个  \  啊
作者: z47057554    时间: 2015-3-15 12:36
本帖最后由 z47057554 于 2015-3-15 12:37 编辑
Shey 发表于 2015-3-15 11:58
可是只有一个  \  啊

这里面的字符串是正则表达式,它有自己对 \ 的定义规则,"\\"在正则表达式里是一个'\',"\\\\"在正则里就代表"\\",而"\\"在虚拟机里就代表一个 \
作者: Shey    时间: 2015-3-15 12:40
z47057554 发表于 2015-3-15 12:36
这里面的字符串是正则表达式,它有自己对 \ 的定义规则,"\\"在正则表达式里是一个'\',"\\\\"在正则里就 ...

谢谢你,我这下明白了,再次感谢




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2