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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© kira 中级黑马   /  2014-2-15 21:31  /  1018 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

现在是这样的
需求是我将叠词(重复的字符串)替换成美元符号
结果发现却出了错误
代码如下
  1. public class RegexDemo2 {

  2.         /**
  3.          * @param args
  4.          */
  5.         public static void main(String[] args) {

  6.          String str1 = "12312312111111344124qqwer";
  7.          replaceFun(str1,"(.)\\1+","$");//将叠词替换成$符号
  8.          
  9.      }
  10.         public static  void  replaceFun(String s,String regex,String ns){
  11.                 s =s.replaceAll(regex, ns);
  12.                 System.out.println(s);
  13.                
  14.     }

  15. }
复制代码

但是我将美元符号$换成&符号 却编译成功了 各位高手这是是什么原因

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

5 个回复

倒序浏览
同问 我也遇到过类似问题,求解答
回复 使用道具 举报
你的问题这有趣,我仔细看了。得到下面结果:
在替换字符串中使用反斜线 (\) 和美元符号 ($) 可能导致与作为字面值替换字符串时所产生的结果不同。美元符号可视为到如上所述已捕获子序列的引用,反斜线可用于转义替换字符串中的字面值字符。
最后想要达到你想要的效果:
  1. public class eternal {
  2.         public static void main(String[] args) {
  3.                 String str1 = "12312312111111344124qqwer";
  4.                 replaceFun(str1,"(.)\\1+","\\$");//将叠词替换成$符号
  5.      }
  6.      public static  void  replaceFun(String s,String regex,String ns){
  7.              s=s.replaceAll(regex, ns);
  8.          System.out.println(s);   
  9.     }
  10. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
同问,求解!
回复 使用道具 举报
刘旭升 发表于 2014-2-15 22:13
你的问题这有趣,我仔细看了。得到下面结果:
在替换字符串中使用反斜线 (\) 和美元符号 ($) 可能导致与作 ...

哇 不愧是真神!!! 原来是这样 我懂了 遇到特殊符号如果要替换最好加上转义符
回复 使用道具 举报
美元符号 ($)
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马