8

AURLを次のようにデコードしたいB

A) http:\/\/example.com\/xyz?params=id%2Cexpire\u0026abc=123

B) http://example.com/xyz?params=id,expire&abc=123

これはサンプルURLであり、私は一般的な解決策を探していますA.Replace("\/", "/")...

現在HttpUtility.UrlDecode(A, Encoding.UTF8)、その他を使用してEncodingsいますが、URLを生成できませんB

4

2 に答える 2

16

この機能だけが必要です

System.Text.RegularExpressions.Regex.Unescape(str);
于 2013-06-23T11:27:49.853 に答える
2

これは私が思いついた基本的な例です。

static void Sample()
{
    var str = @"http:\/\/example.com\/xyz?params=id%2Cexpire\u0026abc=123";
    str = str.Replace("\\/", "/");
    str = HttpUtility.UrlDecode(str);
    str = Regex.Replace(str, @"\\u(?<code>\d{4})", CharMatch);
    Console.Out.WriteLine("value = {0}", str);
}

private static string CharMatch(Match match)
{
    var code = match.Groups["code"].Value;
    int value = Convert.ToInt32(code, 16);
    return ((char) value).ToString();
}

取得するURLの種類によっては、これが欠落している可能性があります。エラーチェック、リテラルのエスケープは処理されませ\\u0026\u0026。開始するには、さまざまな入力を使用して、これを中心にいくつかの単体テストを作成することをお勧めします。

于 2011-08-09T01:35:12.473 に答える