Wenn ich eine Zeichenfolge wie "123"
habe, wie kann ich es in ein Array teilen, das wie ["", "1", "2", "3", ""]
aussehen würde? Wenn ich ToCharArray()
verwende, wird das erste Emoji in 2 Zeichen und das zweite in 7 Zeichen aufgeteilt.Wie kann ich eine Unicode-Zeichenfolge in C# in mehrere Unicode-Zeichen aufteilen?
aktualisieren
Die Lösung sieht nun wie folgt aus:
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;
}
dass Bitte beachten Sie, wie in den Kommentaren erwähnt, ist es nicht für die Familie Emoji arbeiten. Es funktioniert nur für Emojis, die 2 Zeichen oder weniger haben. Die Ausgabe des Beispiels wäre: ["", "1", "2", "3", "", "", "", ""]
'+ + + =' lustig, wusste nicht, dass – fubo
Wie ist das passiert? Emoji ist für die Text-Rendering-Engine. Die Verarbeitung von Text, der Emoji enthält, entspricht in etwa der Freude, chinesischen Text zu verarbeiten. Oder Zalgo, wenn du eine echte Herausforderung haben willst :) Das Erkennen von Surrogaten ist keine Hexerei, verwende Char.IsLowSurrogate(). –