在C#中将unicode(hex)转换为字符串

时间:2018-07-20 11:01:44

标签: c# unicode casting

有什么方法可以将“ U + 4E0B”之类的Unicode转换为其等效字符?

Ex- {\ U + FF8D \ U + FF9E \ U + FF9D \ U + FF84 \ U + FF9E \ U + FF97 \ U + FF72 \ U + FF9D-\ U + 4E0B}

感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

简单的方法是对代理使用正则表达式+ Regex.Replace()

string str = @"\U+FF8D\U+FF9E\U+FF9D\U+FF84\U+FF9E\U+FF97\U+FF72\U+FF9D - \U+4E0BFooBar";

var rx = new Regex(@"\\U\+([0-9A-F]{4})");

string str2 = rx.Replace(str, m =>
{
    ushort u = Convert.ToUInt16(m.Groups[1].Value, 16);
    return ((char)u).ToString();
});

不清楚是否要区分大小写(以使\u+ff9e有效),然后使用:

var rx = new Regex(@"\\[Uu]\+([0-9A-Fa-f]{4})");