C# Unicode转义(\uXXXX)解码

来源:互联网 发布:人上人 知乎 编辑:程序博客网 时间:2024/05/21 10:33


static Regex reUnicode = new Regex(@"\\u([0-9a-fA-F]{4})", RegexOptions.Compiled);public static string Decode(string s){    return reUnicode.Replace(s, m =>    {        short c;        if (short.TryParse(m.Groups[1].Value, System.Globalization.NumberStyles.HexNumber, CultureInfo.InvariantCulture, out c))        {            return "" + (char)c;        }        return m.Value;    });}

正则和js中的一样, 将XXXX转换以16进制System.Globalization.NumberStyles.HexNumber解析为short类型, 然后直接(char)c就能转换成对应的字符, "" + (char)c用于转换成字符串类型返回.

由于正则中也有\uXXXX, 所以需要写成\\uXXXX来表示匹配字符串\uXXXX, 而不是具体的字符.

上面使用到了Lambda, 需要至少dotnet 4的SDK才能编译通过, 可以在dotnet 2下运行.


0 0
原创粉丝点击