A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 尹旗龙 黑马帝   /  2012-2-10 15:19  /  1895 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 尹旗龙 于 2012-2-10 16:21 编辑

将字符串中的两个斜杠替换成一个斜杠:
System.out.println("\\\\".replaceAll("\\\\{2}", "\\"));这句执行时 抛异常!

而下面这个就正常显示一个星号
System.out.println("\\\\".replaceAll("\\\\{2}", "*"));

为什么会是这样呢??

评分

参与人数 1技术分 +1 收起 理由
荣凯旋 + 1

查看全部评分

4 个回复

倒序浏览
System.out.println("\\\\".replaceAll("\\\\{2}", "\\"));这句执行时 抛异常!
应该这样写才对System.out.println("\\\\".replaceAll("\\\\ {2}", "\\"));
\{有转义作用

回复 使用道具 举报
本帖最后由 向北航行 于 2012-2-10 16:11 编辑

'\'在java中是一个转义字符,所以需要用两个代表一个。例如System.out.println( "\\" ) ;只打印出一个"\"。但是'\'也是正则表达式中的转义字符(replaceAll 的参数就是正则表达式),需要用两个代表一个。所以:\\\\被java转换成\\,\\又被正则表达式转换成\。
第一句可以改成System.out.println("\\\\".replaceAll("\\\\{2}", "\\\\"));

评分

参与人数 1技术分 +1 收起 理由
荣凯旋 + 1

查看全部评分

回复 使用道具 举报
向北航行 发表于 2012-2-10 16:06
'\'在java中是一个转义字符,所以需要用两个代表一个。例如System.out.println( "\\" ) ;只打印出一个"\" ...

学习了 谢谢
回复 使用道具 举报
“*”匹配0或多个正好在它之前的那个字符,本身不代表特定的字符!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马