如果我有一个字符串"123???",我怎么能把它分成一个数组,看起来像["", "1", "2", "3", "???"]?如果我使用ToCharArray()第一个表情符号分为2个字符,第二个变成7个字符.
更新
解决方案现在看起来像这样:
public static List<string> GetCharacters(string text)
{
char[] ca = text.ToCharArray();
List<string> characters = new List<string>();
for (int i = 0; i < ca.Length; i++)
{
char c = ca[i];
if (c > ?65535?) continue;
if (char.IsHighSurrogate(c))
{
i++;
characters.Add(new string(new[] { c, ca[i] }));
}
else
characters.Add(new string(new[] { c }));
}
return characters;
}
Run Code Online (Sandbox Code Playgroud)
请注意,正如评论中所述,它不适用于家庭表情符号.它仅适用于2个字符或更少字符的表情符号.该示例的输出将是:["", "1", "2", "3", "?", "?", "?", ""]
.NET将字符串表示为UTF-16元素序列.基本多语言平面(BMP)之外的Unicode代码点将分为高和低代理.每个低10位形成实际代码点值的一半.
有助手来检测这些代理人(例如Char.IsLowSurrogate).
你需要自己处理.
| 归档时间: |
|
| 查看次数: |
851 次 |
| 最近记录: |