2

我有一个带有一些奇怪字符的字符串(例如)" "。我需要检查 List 是否包含字符串中的第一项。但如果我索引它,它总是变成 \ud835. 在使用 Char.ConvertFromUtf32( \ud835) 和其他一些尝试之后,我根本不知道如何将第一项作为“”。

4

1 回答 1

4

用 UTF-16 中的代理对表示,即 .NET 使用的编码。

代理两个字符表示:

        var s = " ";
        Console.WriteLine(new string(new[] { s[0], s[1] }) == "");

有内置的辅助方法,例如Char.ConvertToUtf32Char.IsSurrogate,您可以使用它们来确定您是否处于这种情况。

于 2018-08-11T00:22:10.200 回答