如果我有一個像"123"
這樣的字符串,我怎麼能把它分成一個數組,看起來像["", "1", "2", "3", ""]
?如果我使用ToCharArray()
,則第一張表情符號被分成2個字符,第二個表情符號分成7個字符。如何在C#中將Unicode字符串拆分爲多個Unicode字符?
更新
的解決方案現在看起來是這樣的:
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 > 65000) continue;
if (char.IsHighSurrogate(c))
{
i++;
characters.Add(new string(new[] { c, ca[i] }));
}
else
characters.Add(new string(new[] { c }));
}
return characters;
}
請注意,由於在評論中提到的,它並沒有爲家庭表情符號工作。它只適用於2個字符或更少的表情符號。示例的輸出爲:["", "1", "2", "3", "", "", "", ""]
'+ + + ='好笑,不知道 – fubo
這是怎麼發生的?表情符號用於文本渲染引擎。處理包含表情符號的文本大致相當於處理中文文本的樂趣。或Zalgo,如果你想要一個真正的挑戰:)認識到代用品不是其他火箭科學,使用Char.IsLowSurrogate()。 –