英国国旗表情符号 包含 14 个字节的数据,当它们组合在一起时将呈现一个单一的字符 - 。
如果我的代码看起来像这样:
var test = "\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f";
Console.WriteLine(test);
Console.WriteLine(test.Length);
它将打印字符和数字
14
。我希望它能返回1
。在搜索答案时,我找到了这个解决方案:var stringInfo = new System.Globalization.StringInfo(test);
Console.WriteLine(stringInfo.LengthInTextElements);
问题在于,它输出的是
7
。我猜测它将其解释为双字节unicode并只给了我一半的字节长度。请参见这个dotnetfiddle以获取一个可工作的示例。如何获得字符串表示为图形数的数量?
这里有一个类似的在Swift中编写的测试,在OSX上运行XCode,它显然正按照我的要求工作,但我需要它在C#中。
test
初始化代码替换为var test = Char.ConvertFromUtf32(0x1F3F4).ToString();
,则将显示预期的长度。也许您有一些额外的字符或其他东西在其中? - itsme86