मैं यह निर्धारित करने के लिए आने वाली स्ट्रिंग को पार्स करने की कोशिश कर रहा हूं कि इसमें कोई गैर-इमोजिस है या नहीं।नोड.जेएस इमोजी पार्सिंग
मैं this great article by Mathias से गुजर चुका हूं और रेगेक्स पीढ़ी के लिए एन्कोडिंग/डिकोडिंग और regenerate
दोनों देशी punycode
का लाभ उठा रहा हूं। मैं इमोजिस का अपना शब्दकोश प्राप्त करने के लिए EmojiData का भी उपयोग कर रहा हूं।
उन सभी के साथ, कुछ इमोजी कमजोर छोटे बगर्स बने रहते हैं और मैच से इनकार करते हैं। कुछ इमोजी के लिए, मुझे कोड पॉइंट की एक जोड़ी मिलती रहती है।
// Example of a single code point:
console.log(punycode.ucs2.decode(''));
>> [ 128169 ]
// Example of a paired code point:
console.log(punycode.ucs2.decode('⌛️'));
>> [ 8987, 65039 ]
मैथियास अपने लेख में इस पर छू लेती है (और इस के आसपास काम कर पनीकोड का एक उदाहरण देता है), लेकिन यहां तक कि उनके उदाहरण का उपयोग मैं एक गलत प्रतिक्रिया मिल:
function countSymbols(string) {
return punycode.ucs2.decode(string).length;
}
console.log(countSymbols(''));
>> 1
console.log(countSymbols('⌛️'));
>> 2
क्या पता लगाने के लिए सबसे अच्छा तरीका है क्या एक स्ट्रिंग में सभी इमोजी हैं या नहीं? यह अवधारणा के सबूत के लिए है, इसलिए समाधान आवश्यकतानुसार क्रूर बल के रूप में हो सकता है।
--- अद्यतन ---
ऊपर मेरी परेशान इमोजी पर एक छोटे से अधिक संदर्भ।
⌛ // \u231b
⌛️ // \u231b\ufe0f
पहले एक अच्छा काम करता है, दूसरा नहीं करता है:
ये नेत्रहीन समान लेकिन वास्तव में अलग यूनिकोड मूल्यों (दूसरा एक ऊपर के उदाहरण से है) कर रहे हैं। दुर्भाग्यवश, दूसरा संस्करण आईओएस का उपयोग करने के लिए लगता है (यदि आप iMessage से कॉपी और पेस्ट करते हैं तो आपको दूसरा मिलता है, और जब ट्विलियो से टेक्स्ट प्राप्त होता है, तो वही बात)।
तो यह लगता है कि संयोजन के निशान (दूसरा उदाहरण पर यूनिकोड की है कि अतिरिक्त बिट) क्या ट्रिपिंग है कर रहे हैं यहाँ चीजें। मैं अपनी स्ट्रिंग से इन तत्वों से छुटकारा पाने के तरीके में देख रहा हूं। – thekevinscott
यदि कोई भी कभी भी इसी तरह के उपयोग के मामले में चलता है, तो मैंने इसे सब एक एनपीएम मॉड्यूल में पैक किया: https://github.com/scottlabs/emojiExists – thekevinscott