C#正则的委托和lambda表达式用法

前面说到过正则表达式中使用委托的做法:MatchEvaluator,见此

这是最标准的写法:自定义一个函数,然后用此函数委托作为参数实例化MatchEvaluator对象,最后在正则匹配的时候可以用此对象当参数传入,实现对匹配结果的手动处理。

今天介绍两种比较省事的写法,用例如下,把字符串中用括号括起来的纯数字减10:
        string s = "sdlfk(23984)sdlkf(3)sldfk(15)weoif23948(fsdlk)fdskjf(34)dlfk(432d)<br/>";
        Response.Write(s);
        Regex r = new Regex(@"(?<=\()\d+(?=\))");

        //1, lambda表达式
        MatchEvaluator me = m => (int.Parse(m.Value) - 10).ToString();
        Response.Write(r.Replace(s, me));

        //2, 匿名委托
        Response.Write(r.Replace(s, delegate(Match m) { return (int.Parse(m.Value) - 10).ToString(); }));

输出如下:

sdlfk(23984)sdlkf(3)sldfk(15)weoif23948(fsdlk)fdskjf(34)dlfk(432d)
sdlfk(23974)sdlkf(-7)sldfk(5)weoif23948(fsdlk)fdskjf(24)dlfk(432d)
sdlfk(23974)sdlkf(-7)sldfk(5)weoif23948(fsdlk)fdskjf(24)dlfk(432d)

没什么问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值