2016-05-07 9 views
3

Nach TONS der Forschung habe ich gefunden, wie man Emoji in Echtzeit mit der Twemoji-Bibliothek analysieren.Javascript finden Emoji in String und Parse

Jetzt muss ich herausfinden, wie zu identifizieren, wenn es Emoji in einem Text gibt, greifen Sie die Position dieser Emoji und führen Sie die Parsing-Funktion.

können Einige Beispieltext

sein
It is a great day . 

Nötige finden, die in der gesamten Zeichenfolge und verwenden Sie die folgende Funktion seiner Hex-Code zu erhalten, die Ersatzpaare zurückkehren und mit der Twemoji Bibliothek analysieren.

function entityForSymbolInContainer(selector) { 
    var code = data.message.body.codePointAt(0); 
    var codeHex = code.toString(16); 
    while (codeHex.length < 4) { 
     codeHex = "0" + codeHex; 
    } 

    return codeHex; 
} 

// Get emoji hex code 
    var emoji = entityForSymbolInContainer(data.message.body); 
// For given an HEX codepoint, returns UTF16 surrogate pairs 
    var emoji = twemoji.convert.fromCodePoint(emoji); 
// Given a generic string, it will replace all emoji with an <img> tag 
    var emoji = twemoji.parse(emoji); 

Ich verwende die folgende Überprüfung, um zu sehen, ob es Emoji im Text gibt. Problem ist, dass für ein einfaches grinsendes Gesicht() es mich nicht alarmiert. Wenn ich jedoch "Hemd und Krawatte"() eintippe, wird es mich darauf aufmerksam machen.

var string = "It is a great day ."; 
var emojiRegex = /([\uE000-\uF8FF]|\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDDFF])/g; 

if (string.match(emojiRegex)) { 
    alert("emoji found"); 
} 

Bitte helfen Sie bei der Ausgabe der regex die Emojis nicht richtig erfasst. Danach sollte ich in der Lage sein, das innerhalb der Saite zu finden.

Vielen Dank!

+0

ist U + 1F600, die in UTF-16 als \ uD83D \ uDE00 codiert wird. Dein regulärer Ausdruck betrachtet das nicht als Emoji. (Es stoppt bei \ uD83D \ uDDFF.) –

+0

Ok, danke für die Klarstellung. Kennen Sie eine Ressource für eine vollständigere Regex? –

+1

Bevor Sie einen Algorithmus entwickeln können, um Emoji zu erkennen, müssen Sie zuerst eine klare Definition haben, was ein Emoji ist. Wer diesen Regex schrieb, hielt U + 1F600 nicht für einen Emoji. –

Antwort

-1

Dieser Post gibt eine sehr umfassende Regex für die passenden Emojis mit einer sehr guten Erklärung. Er stützt seine Regex auf die von der Bibliothek lodash veröffentlichte.

(?:[\u2700-\u27bf]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udfff]|[\u0023-\u0039]\ufe0f?\u20e3|\u3299|\u3297|\u303d|\u3030|\u24c2|\ud83c[\udd70-\udd71]|\ud83c[\udd7e-\udd7f]|\ud83c\udd8e|\ud83c[\udd91-\udd9a]|\ud83c[\udde6-\uddff]|[\ud83c[\ude01-\ude02]|\ud83c\ude1a|\ud83c\ude2f|[\ud83c[\ude32-\ude3a]|[\ud83c[\ude50-\ude51]|\u203c|\u2049|[\u25aa-\u25ab]|\u25b6|\u25c0|[\u25fb-\u25fe]|\u00a9|\u00ae|\u2122|\u2139|\ud83c\udc04|[\u2600-\u26FF]|\u2b05|\u2b06|\u2b07|\u2b1b|\u2b1c|\u2b50|\u2b55|\u231a|\u231b|\u2328|\u23cf|[\u23e9-\u23f3]|[\u23f8-\u23fa]|\ud83c\udccf|\u2934|\u2935|[\u2190-\u21ff]) 

https://medium.com/@thekevinscott/emojis-in-javascript-f693d0eb79fb