一种选择是将输入字符串的长度与删除所有表情符号字符的同一字符串的长度进行比较:
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)只会占用一个字节。
| 归档时间: |
|
| 查看次数: |
3031 次 |
| 最近记录: |