2011-08-09 33 views
7

私はBにデコードURL Aたい:これはサンプルURLであると私は一般的な解決策を探していないA.Replace("\/", "/")...URLの "¥u0026"をデコードする方法は?

現在、私はHttpUtility.UrlDecode(A, Encoding.UTF8)や他のEncodingsを使用

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

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

をが、 URLを生成できませんB

+1

'\ /'ヘッドすでにこの機能を必要としています。あなたは腕を/ –

+0

@ Hanseに翻訳するつもりはありません。これは、時々使用される形式の「Google」です。 – Xaqron

答えて

9

はあなただけ遅すぎる、水の下

System.Text.RegularExpressions.Regex.Unescape(str); 
+0

ありがとうございました...あなたは文字通り私の今夜を保存しました! – Smartis

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する必要があります。私はこれを取り巻くいくつかの単体テストを書くために様々な情報を入力することをお勧めします。

関連する問題