2011-08-09 11 views
7

मैं यूआरएल AB को डिकोड हैं:यूआरएल में " u0026" डीकोड कैसे करें?

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 लेकिन यूआरएल B उत्पन्न नहीं कर सकता!

+1

'\ /' सिर पहले से ही पानी के नीचे, बहुत देर हो चुकी जरूरत है। हथियारों का अनुवाद करने के लिए कोई भी तरीका नहीं है/ –

+0

@ हंस: यह प्रारूप कभी-कभी '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 होना चाहिए, जैसे अक्षरों की जांच से त्रुटि जांच को संभाल नहीं है। मैं शुरू करने के लिए विभिन्न इनपुट के साथ इसके आसपास कुछ यूनिट परीक्षण लिखने की सिफारिश करता हूं।

संबंधित मुद्दे