代碼編寫及運行環境Visual Studio 2010 .NET v4.0.30319
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
namespace DelegateUseInRegexReplace
{
/// <summary>
/// 有的時候通過正則表達式替換字符串中匹配內容中部分內容,需要使用委托實現之。
/// 本例實現的是在html源代碼轉換可能出現的一種情況,即需要對超鏈接中href屬性中的域名或IP進行整體的替換
/// 本例中是把IP地址192.168.1.23替換為202.145.65.15
/// 正則表達式替換中的委托MatchEvaluator匹配的是具有一個Match參數返回string的方法
/// </summary> www.2cto.com
class Program
{
static void Main(string[] args)
{
string html = "<br /><a href=\"http://192.168.1.23/index.html\">192.168.1.23/index.html</a>";
Console.WriteLine("原始字符串:");
Console.WriteLine(html);
string htmlResult = Regex.Replace(html, "<a[^<]*>", new MatchEvaluator(ReplaceIP));
Console.WriteLine("替換後字符串:");
Console.WriteLine(htmlResult);
}
public static string ReplaceIP(Match match)
{
return match.Value.Replace("192.168.1.23", "202.145.65.15");
}
}
}
運行結果為:
摘自 gxmark的專欄