XianRenShan
XianRenShan
2017-08-09 03:39
采纳率: 66.7%
浏览 3.0k

c#正则表达式中的匹配与替换

string str=“17春六年级数学班(1次),17年夏季创意美术班(5次),17暑假写作(8次)”
把匹配括号里的单位"次"替换成别的内容
期望:str=“17春六年级数学班(1课时),17年夏季创意美术班(5课时),17暑假写作(8课时)”

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • showbo
    已采纳

    正则提取括号中的内容在执行replace操作

    
        protected string Replace(System.Text.RegularExpressions.Match m)
        {
            return m.Groups[0].Value.Replace("次", "课时");
        }
    
    
    
        string str = "17春六年级数学班(1次),哈次,17年夏季创意美术班(5次),17暑假写作(8次),次级";
        str = System.Text.RegularExpressions.Regex.Replace(str, @"\([^)]+\)", Replace);
    

    如果你确认你括号内容都是 (数字次),直接替换

      string str = "17春六年级数学班(1次),哈次,17年夏季创意美术班(5次),17暑假写作(8次),次级";
     str=str.Replace("次)","课时)");
    
    点赞 评论
  • guwei4037
    guwei4037 2017-08-09 03:43

    直接str.Replace("次", "课时");

    点赞 评论
  • lppzyt
    lppzyt 2017-08-09 10:15
     Pattern p=Pattern.compile("\\(\\d{1,2}.\\)"); //是匹配()的
                Matcher m=p.matcher(str); 
                while(m.find()){//它是分组,即有哪些匹配的,str.replace不改变str的值,所以才每次调用都进行赋值的
                    System.out.println(m.group()+"m");
                    str=str.replace(m.group().substring(1,m.group().length()-1),"课时");//去掉括号就剩里面的内容了
                }
                System.out.println(str);
                可以参考一下pattern和Mather的用法
    
    点赞 评论
  • lppzyt
    lppzyt 2017-08-09 10:18

    顺便再看一下正则表达式,因为()在正则表达式中有意义。所以需转义用到的时候。也包括replace和split方法。也就是正则表达式用到的语法,
    都需要转义。

    点赞 评论

相关推荐