黑马程序员技术交流社区
标题:
两个问题,求解决,谢谢
[打印本页]
作者:
『无』尘
时间:
2013-11-20 02:31
标题:
两个问题,求解决,谢谢
public class Demo{
public static void main(String[]args){
String info = "**********";
info = info.replaceFirst("\\*","#");
System.out.println(info);
}
}
"\\*"需要两个\才可以通过编译器,之前毕老师的for循环里用*打三角形,前面一个转义字符\都没有,直接就是"*"
问题1:这和For循环里的*有什么不一样么
问题2:转义字符那视频里不是说“\"”就可以直接打印 " 么,这程序"\*"为什么仍不能通过编译,却需要打两个\\
作者:
qw无语
时间:
2013-11-20 10:03
String replaceFirst(String regex, String replacement)
使用给定的 replacement 字符串替换此字符串匹配给定的正则表达式的第一个子字符串。
info = info.replaceFirst("\\*","#");
第一个参数regex是一个正则表达式,而*在正则里面是表示零次或多次
而这里是要取第一个*,将他替换成#
而在正则里面\\ 反斜线字符 ,2个才是反斜线字符
作者:
Jim-剣◆﹏
时间:
2013-11-20 10:23
本帖最后由 Jim-剣◆﹏ 于 2013-11-20 10:29 编辑
专门去查了API,这个方法
public String replaceFirst(String regex,String replacement)
参数:
regex - 用来匹配此字符串的正则表达式
replacement - 用来替换第一个匹配项的字符串
所以,参数1必须要符合正则表达式,不知道你学到正则没有
我假设你学了正则,那现在问题就变成了为什么"**********"的正则表达式是"\\*",下面详解
因为\*能得到*,但是\*里的那个斜杠,也需要转义才能得到一个斜杠,那么就是
\\-->\
,所以\*就需要两个\\了
至于之前毕老师那个,我相信你懂的,就是相当于打印字符串,不需要转义的,正则才有限定
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2