您的位置:首页 > 编程语言 > C#

C# Unicode转义(\uXXXX)解码

2015-07-02 15:05 295 查看
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下运行.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: