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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

©  『无』尘 中级黑马   /  2013-11-20 02:31  /  1333 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class Demo{
      public static void main(String[]args){
           String info = "**********";
           info = info.replaceFirst("\\*","#");
                   System.out.println(info);
          
          }

}

"\\*"需要两个\才可以通过编译器,之前毕老师的for循环里用*打三角形,前面一个转义字符\都没有,直接就是"*"
问题1:这和For循环里的*有什么不一样么
问题2:转义字符那视频里不是说“\"”就可以直接打印 " 么,这程序"\*"为什么仍不能通过编译,却需要打两个\\



评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

2 个回复

倒序浏览
String replaceFirst(String regex, String replacement)
          使用给定的 replacement 字符串替换此字符串匹配给定的正则表达式的第一个子字符串。
info = info.replaceFirst("\\*","#");
第一个参数regex是一个正则表达式,而*在正则里面是表示零次或多次
而这里是要取第一个*,将他替换成#
而在正则里面\\ 反斜线字符 ,2个才是反斜线字符

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 Jim-剣◆﹏ 于 2013-11-20 10:29 编辑

专门去查了API,这个方法
public String replaceFirst(String regex,String replacement)
参数:
regex - 用来匹配此字符串的正则表达式
replacement - 用来替换第一个匹配项的字符串
所以,参数1必须要符合正则表达式,不知道你学到正则没有
我假设你学了正则,那现在问题就变成了为什么"**********"的正则表达式是"\\*",下面详解
因为\*能得到*,但是\*里的那个斜杠,也需要转义才能得到一个斜杠,那么就是\\-->\,所以\*就需要两个\\了
至于之前毕老师那个,我相信你懂的,就是相当于打印字符串,不需要转义的,正则才有限定
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马