我有一些表情符号,例如 (👩💻 👨💻 🇧🇬 🇧🇸 ) 这个。我正在为每个表情符号添加一个 span
。我有一个处理代码将其转换为 span
这里是将转换为 span
emojiSpan = function (emojis) {
if (!emojis)
return;
try {
let emojiSpan;
var unicodeMatch = /([\uE000-\uF8FF]|\uD83C[\uDC00-\uDFFF]|\uD83D[\uDC00-\uDFFF]|[\u2694-\u2697]|\uD83E[\uDD10-\uDD5D])/g;
if (emojis.match(unicodeMatch)) {
emojis.match(unicodeMatch).filter(function (unicode) {
if (unicode.trim().length === 1) return emojis;
emojiSpan = _getEmojiSpan(unicode);
emojis = Utility.replaceAll(emojis, unicode.trim(), emojiSpan);
});
}
} catch (error) {
console.error("Error while parsing emoji", error.stack);
}
return emojis;
};
var _getEmojiSpan = function(emoji){
if(!emoji)
return;
return `<span class="emojiNative">${emoji}</span>`;
}
在这里,输入是 👩💻 👨💻 🇧🇬 🇧🇸,我得到的输出如下
<span class="emojiNative">👩</span>
<span class="emojiNative">
<span class="emojiNative">💻</span>
</span>
<span class="emojiNative">👨</span>
<span class="emojiNative">
<span class="emojiNative">💻</span>
</span>
<span class="emojiNative">
<span class="emojiNative">🇧</span>
</span>
<span class="emojiNative">🇬</span>
<span class="emojiNative">
<span class="emojiNative">🇧</span>
</span>
<span class="emojiNative">🇸</span>
表情符号正在分离。我怎样才能得到准确的表情符号?请帮助我。
预期的输出是
<span class="emojiNative">👩💻</span>
<span class="emojiNative">👨💻</span>
<span class="emojiNative">🇧🇬</span>
<span class="emojiNative"> 🇧🇸 </span>
最佳答案
“合并”为一个的表情符号,例如男性/女性程序员,由零宽度连接器 U+200D 分隔。您可以将正则表达式扩展为看起来像 [emoji](?:\u200D[emoji])*
以添加对组合表情符号的支持。
至于旗帜,这些旗帜是由两个拼写国家代码的区域指标制成的。这些指标在一个固定范围内,所以当您找到该范围时,您可以检查是否有两个指标,如果有则将它们放在一起:
(?:\uD83C[\uDDE6-\uDDFF]){2}
确保它在正则表达式的其他 \uD83C
部分之前。
emojiSpan = function (emojis) {
if (!emojis)
return;
try {
var unicodeMatch = /(?:\uD83C[\uDDE6-\uDDFF]){2}|(?:[\uE000-\uF8FF]|\uD83C[\uDC00-\uDFFF]|\uD83D[\uDC00-\uDFFF]|[\u2694-\u2697]|\uD83E[\uDD10-\uDD5D])(?:\u200D(?:[\uE000-\uF8FF]|\uD83C[\uDC00-\uDFFF]|\uD83D[\uDC00-\uDFFF]|[\u2694-\u2697]|\uD83E[\uDD10-\uDD5D]))*/g;
emojis = emojis.replace(unicodeMatch, '<span class="emojiNative">$&</span>');
} catch (error) {
console.error("Error while parsing emoji", error.stack);
}
return emojis;
};
var _getEmojiSpan = function(emoji){
if(!emoji)
return;
return `<span class="emojiNative">${emoji}</span>`;
}
document.body.innerHTML += emojiSpan("👩💻 👨💻 🇧🇬 🇧🇸");
关于javascript - 如何找到unicode组合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52036084/