如何计算文本或字符串中的表情符号

Jos*_*ler 6 javascript

如何计算字符串或文本行中的表情符号并显示输出,文本行或字符串中有多少个表情符号?

例如"Hello there"

输出应该是: 7

Tim*_*sen 5

一种选择是将输入字符串的长度与删除所有表情符号字符的同一字符串的长度进行比较:

function fancyCount(str){
    return Array.from(str.split(/[\ufe00-\ufe0f]/).join("")).length;
}

var input = "Hello  there";
var output = input.replace(/([\uE000-\uF8FF]|\uD83C[\uDC00-\uDFFF]|\uD83D[\uDC00-\uDFFF]|[\u2694-\u2697]|\uD83E[\uDD10-\uDD5D])/g, "");
console.log("number of Emoji: " + (fancyCount(input) - fancyCount(output)));
Run Code Online (Sandbox Code Playgroud)

我非常感谢这篇有用的博客文章,它提供了该fancyCount()功能。该函数可以检测某些 Emoji 字符的宽度实际上为 2,而其他字符的宽度为 1。这里的问题是encoding 之一。一些 Emoji 字符可能会占用两个字节,而一个基本的 ASCII 字符(例如 AZ)只会占用一个字节。

  • 此检测方法存在错误或某些问题。由于某种原因,上面的代码没有检测到这个“❤️”表情符号。“表情符号数量:0”是我们使用“❤️”时的结果 (2认同)