我有一个带有一些奇怪字符的字符串(例如)"𝓛𝓮𝓪𝓭 𝓑𝓪𝓬𝓴𝓮𝓷𝓭"
。我需要检查列表是否包含字符串中的第一项。但是,如果我将其编入索引,它将始终变为\ud835
。使用Char.ConvertFromUtf32(\ud835
)和其他一些尝试之后,我根本无法找到如何将第一项作为“𝓛”获取。
最佳答案
𝓛用UTF-16(.NET使用的编码)中的代理对表示。
代理对用两个字符表示:
var s = "𝓛𝓮𝓪𝓭 𝓑𝓪𝓬𝓴𝓮𝓷𝓭";
Console.WriteLine(new string(new[] { s[0], s[1] }) == "𝓛");
有诸如
Char.ConvertToUtf32
和Char.IsSurrogate
之类的内置帮助器方法,可用于确定您是否处于这种情况。关于c# - 在C#[UWP]中从“\ud835”格式转换为“𝓛”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51795001/