यदि मेरे पास "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 > 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
यह कैसे हुआ? इमोजी पाठ प्रतिपादन इंजन के लिए है। प्रसंस्करण पाठ जिसमें इमोजी शामिल है, चीनी पाठ को संसाधित करने की खुशी के बराबर है। या ज़ल्गो, यदि आप एक असली चुनौती चाहते हैं :) सरोगेट्स को पहचानना अन्यथा रॉकेट विज्ञान नहीं है, Char.IsLowSurrogate() का उपयोग करें। –