我有一个带有一些奇怪字符的字符串(例如)"𝓛𝓮𝓪𝓭 𝓑𝓪𝓬𝓴𝓮𝓷𝓭"。我需要检查列表是否包含字符串中的第一项。但是,如果我将其编入索引,它将始终变为\ud835。使用Char.ConvertFromUtf32(\ud835)和其他一些尝试之后,我根本无法找到如何将第一项作为“𝓛”获取。

最佳答案

𝓛用UTF-16(.NET使用的编码)中的代理对表示。

代理对用两个字符表示:

        var s = "𝓛𝓮𝓪𝓭 𝓑𝓪𝓬𝓴𝓮𝓷𝓭";
        Console.WriteLine(new string(new[] { s[0], s[1] }) == "𝓛");


有诸如Char.ConvertToUtf32Char.IsSurrogate之类的内置帮助器方法,可用于确定您是否处于这种情况。

关于c# - 在C#[UWP]中从“\ud835”格式转换为“𝓛”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51795001/

10-13 06:20