C# 在C语言中将unicode(十六进制)转换为字符串#

C# 在C语言中将unicode(十六进制)转换为字符串#,c#,unicode,casting,C#,Unicode,Casting,是否有任何方法可以将类似Unicode的“U+4E0B”转换为其等效字符 Ex-{\U+FF8D\U+FF9E\U+FF9D\U+FF84\U+FF9E\U+FF97\U+FF72\U+FF9D-\U+4E0B} 感谢任何类型的帮助 简单的方法是使用regex+regex.Replace()和委托: string str = @"\U+FF8D\U+FF9E\U+FF9D\U+FF84\U+FF9E\U+FF97\U+FF72\U+FF9D - \U+4E0BFooBar"; var rx =

是否有任何方法可以将类似Unicode的“U+4E0B”转换为其等效字符

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


感谢任何类型的帮助

简单的方法是使用regex+
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})");

可能重复这一点也有助于@Fuzzybear它们都是回答不好的问题,格式不同。第一个使用
\u00f6
而不是
\u+00f6