【发布时间】:2021-09-17 17:25:37
【问题描述】:
经过大量研究,我找到了如何使用 Twemoji 库实时解析表情符号。
现在,我需要弄清楚如何识别某些文本中是否有表情符号,获取该表情符号的位置并执行解析功能。
一些示例文本可以是
It is a great day ????.
需要找到????在整个字符串中并使用以下函数获取其十六进制代码,返回代理对并使用 Twemoji 库进行解析。
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);
我正在使用以下检查来查看文本中是否有表情符号。问题是对于一个简单的笑脸(??????)它不会提醒我。但是,如果我输入“衬衫和领带”(??????),它会提醒我。
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");
}
请帮助解决正则表达式无法获取表情符号的问题。之后,我应该能够在字符串中找到它。
谢谢!
【问题讨论】:
-
????是 U+1F600,在 UTF-16 中编码为 \uD83D\uDE00。您的正则表达式不认为这是表情符号。 (它停在 \uD83D\uDDFF。)
-
好的,感谢您的澄清。你知道更完整的正则表达式的资源吗?
-
在开发算法来检测 emoji 之前,您首先需要对 emoji 是什么有一个清晰的定义。编写该正则表达式的人并不认为 U+1F600 是表情符号。
标签: javascript string emoji