我有一个带有一些奇怪字符的字符串(例如)" "
。我需要检查 List 是否包含字符串中的第一项。但如果我索引它,它总是变成 \ud835
. 在使用 Char.ConvertFromUtf32( \ud835
) 和其他一些尝试之后,我根本不知道如何将第一项作为“”。
问问题
873 次
1 回答
4
用 UTF-16 中的代理对表示,即 .NET 使用的编码。
代理对用两个字符表示:
var s = " ";
Console.WriteLine(new string(new[] { s[0], s[1] }) == "");
有内置的辅助方法,例如Char.ConvertToUtf32
和Char.IsSurrogate
,您可以使用它们来确定您是否处于这种情况。
于 2018-08-11T00:22:10.200 回答