How to decode “\\u0026” in a URL?

核能气质少年 提交于 2019-12-05 05:05:44

You only need this function

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

This is a basic example I was able to come up with:

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();
}

This is probably missing a lot depending on the types of URLs you are going to get. It doesn't handle error checking, escaping of literals, like \\u0026 should be \u0026. I'd recommend writing a few unit tests around this with various inputs to get started.

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!