JS截取含有表情的字符串

83 阅读1分钟

需求:

const str = 'Hello🌞,你好';

要求通过截取得到“Hello🌞”

传统方法及问题:

提到截取,通常会想到用slice

str.slice(0,6)

使用slice后,得到的是“Hello�”,并未得到预期的结果。原因是Unicode字符占用2个字符长度。

JavaScript 内部,字符以 UTF-16 的格式储存,每个字符固定为2个字节。对于那些需要4个字节储存的字符(Unicode 码点大于0xFFFF的字符),JavaScript 会认为它们是两个字符。

解决办法:

使用Array.from,将字符串转为数组后再做截取,并拼接成目标结果。

const resStr = Array.from(str).slice(0, 6).join(''); 
console.log(resStr); // 可得到“Hello🌞”

参考:blog.csdn.net/suwu150/art…