JavaScript-获取字符串结尾表情符号的真实长度



我在JavaScript中有一个字符串,如下所示:

var string = "🌲🥒 Hello 👋 world!😂"; // Length of emoji at end: 2 characters ("😂".length = 2)

或者:

var string = "🛁 Hello world! 👨‍👩‍👧"; // Length of emoji at end: 8 characters ("👨‍👩‍👧".length = 8)

或者没有表情符号的字符串:

var string = "🥒 Hello world!"; // No emoji at end

我需要找到以下内容:

  1. 字符串结尾是否有表情符号
  2. 它由多少个字符组成

我甚至检测到了带有以下代码的两个字符表情符号:

var emoji = new RegExp('\p{Extended_Pictographic}', 'u');
var isEmoji = emoji.test(string.slice(-2)); // true for the first string

然而,这显然不能检测长度(例如。👨‍👩‍👧 =8( 。如果有人有使用JavaScript表情符号的经验,并能为我指明正确的方向,我们将不胜感激。

规则是,每个由几个unicode字符组成的表情符号都只是几个表情符号的组合,因此,如果使用spread运算符将整个字符串划分为一个数组,那么如果最后一个元素是表情符号,无论其长度如何。。。那么现在数组中的最后一个元素也必须是表情符号

var string1 = "🛁 Hello world! 👨‍👩‍👧";
var string2 = "🛁 Hello world! 👨‍👩‍👧!";
var string3 = "🌲🥒 Hello 👋 world!😂";
var string4 = "🌲🥒 Hello 👋 world!😂!";
var emoji = new RegExp('\p{Extended_Pictographic}', 'u');
var isEmoji1 = emoji.test([...string1].at(-1)); 
var isEmoji2 = emoji.test([...string2].at(-1)); 
var isEmoji3 = emoji.test([...string3].at(-1)); 
var isEmoji4 = emoji.test([...string4].at(-1)); 
console.log(isEmoji1)
console.log(isEmoji2)
console.log(isEmoji3)
console.log(isEmoji4)

最新更新