c#正则的一个妙用

来源:互联网 发布:游戏编程精粹 pdf 编辑:程序博客网 时间:2024/05/21 10:24

假如,我们有这样一段文字

<color  :  red>愿:</color><color:green>我们的祖国越来越强大</color>

要替换成

<color  =  red>愿:</color><color=green>我们的祖国越来越强大</color>

当然,如果就事论事的话,要替换这个字符串的办法非常多.但是如果这仅仅是一个非常非常长的字符串,且里面有N多个个<color:xx>标记呢?这个时候自然而然的就想到了用正则,也很容易的就找到了正确的正则<color[ ]*:[ ]*[a-zA-Z]+[>](当然也有很多多种方式,正则的世界也是条条大陆通巴黎的)至于如何替换的思路也是非常清晰.但是如何用代码非常简单的就完成这个功能却是很让人有点摸不着头脑了.

其实Regex类的方法很多,我们要实现这个功能,需要用到的是Replace()方法的一个重载版本

Replace(string input, string pattern, string replacement);

其实最主要的是如何构造最后的那个replacement.

我们可以用匿名方法来实现想要的功能,其实这段代码真的非常简单

<code=C#>

string str = "<color : red>愿:</color><color:green>我们的祖国越来越强大</color>";
string regexPattern = "<color[ ]*:[ ]*[a-zA-Z]+[>]";
str = Regex.Replace(str, regexPattern, delegate(Match m) { return Regex.Match(m.Value, regexPattern).Value.Replace(":", "="); });

</code>

原创粉丝点击