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

标签 javascript

<分区>

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

例如:“你好😀😁😂🤣😃😄😄你好”

输出应该是:7

最佳答案

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

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)));

我非常感谢 this helpful blog post ,它提供了 fancyCount() 函数。此函数可以检测到某些 Emoji 字符的宽度实际上为 2,而其他字符的宽度为 1。这里的问题之一是编码。一些 Emoji 字符可能占用两个字节,而基本的 ASCII 字符(例如 A-Z)只占用一个字节。

关于javascript - 如何计算文本或字符串中的表情符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52420952/

相关文章:

javascript - 如何在 Angular2 项目中将 moment.js 实现为管道

javascript - 无法读取 null 的属性 'contentDocument'

javascript - 与 ISO 8601 相比,ECMAScript 5 日期格式简化了什么

javascript - 在javascript中询问是/否问题的代码

javascript - 在 javascript 中将字符串 "009"解析为整数?

javascript - 通过IE、ADODB.Stream将base64文本数据保存为二进制文件到硬盘

javascript - 如果我只使用一个运算符,我应该使用管道运算符吗?

javascript - 按 tagName 过滤元素

javascript - 更新 Redux/React 中 value = x 的状态

javascript - 谷歌浏览器 Javascript 调试器