2013-03-24 72 views
0

我想写我自己的301重定向。我有2个字符串。一个是旧的网址,另一个是新的网址。这个例子是下面RegEx.Replace问题 - 自定义URL重写

原始地址:

procurement-notice-(\d+).html 

新的URL:

/Bids/Details/$1 

这样的,我有很多新老网址的。我正在做以下匹配工作正常的网址。 “重定向”是一个包含新旧网址的字典。

var matchedURL = redirect.SingleOrDefault(d => Regex.Match(url, d.Key, RegexOptions.Singleline).Success); 

但现在我想用新的网址替换匹配的网址。

回答

1

您已匹配URL,其中Key - 旧URL正则表达式和Value - 新URL替换模式。

您可以使用Regex.Replace方法,它接受3个字符串参数。所以你的情况

using System; 
using System.Text.RegularExpressions; 

class App 
{ 
    static void Main() 
    { 
    var input = "procurement-notice-1234.html"; 
    var pattern = @"procurement-notice-(\d+).html"; 
    var replacement = "/Bids/Details/$1"; 
    var res = Regex.Replace(input, pattern, replacement); 
    Console.WriteLine(res); 
    // will output /Bids/Details/1234 
    } 
} 

,代码可能会是这样的:

var matchedURL = redirect.SingleOrDefault(d => Regex.Match(url, d.Key, RegexOptions.Singleline).Success); 
if (matchedURL != null) 
{ 
    var result = Regex.Replace(url, matchedURL.Key, matchedURL.Value); 
} 
+0

+1正是这就是我所期待的。这么快.. – Karthick 2013-03-24 10:14:25