zoukankan      html  css  js  c++  java
  • 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)

    没什么问题

  • 相关阅读:
    Outlook同步问题
    Excel下三角图解的绘制
    数据库,SQL,万恶之源?
    新年第一篇
    ArcGIS的GeoProcessing的原理及实现(1)
    如何在多个文件中查找需要的信息
    关于GIS门户(GIS Portal)的概念
    2004总结
    MapViewControl更新
    GCDPlot 0.22 介绍
  • 原文地址:https://www.cnblogs.com/walkerwang/p/2254424.html
Copyright © 2011-2022 走看看