0

私は自分の301リダイレクトを書き込もうとしています。私は2つの文字列を持っています。1つは古いURLで、もう1つは新しいURLです。例は以下のとおりです

元のURL:

procurement-notice-(\d+).html

新しいURL:

/Bids/Details/$1

このように、私は古いURLと新しいURLをたくさん持っています。正常に動作するURLに一致させるために、以下を実行しています。ここで、「リダイレクト」は古いURLと新しいURLを含む辞書です。

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

しかし今、私は一致したものを新しいURLに置き換えたいと思います。

4

1 に答える 1

1

一致したURLがあります。ここで、Key-古いURL正規表現、およびValue-新しいURL置換パターンです。

3つの文字列パラメーターを受け入れるRegex.Replaceメソッドを使用できます。

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);
}
于 2013-03-24T08:22:16.400 に答える