Skip to content

如何判断某个字符串长度(要求支持表情)?

Posted on:2024年8月10日 at 17:07

大家看到题目,可能首先想到的是 str.length 获取字符串的长度。

其实 JS 中的字符串长度是个奇怪的设定,很多编程语言,获取字符串的长度是得到字节长度,比如一个正常的汉字是两个字节,但在 js 中,‘汉’.length 是 1 。看上去很方便,殊不知,这个特性埋下的坑。

比如:

😀 : '😀'.length 得到的是 2
𠮷 : '𠮷''.length 得到的也是 2

ES6 里添加了一个东西叫字符串迭代器,还添加了一个东西叫 unicode 正则模式,它们也不能直接统计字符数,而是可以把字符串拆成一个字符的数组,你可以间接的计算出字符个数。

使用字符串的Iterator统计长度,如下例子:

const testStr = "123 ";

for (let c of testStr) {
  console.log(c);
}
// 1
// 2
// 3
//
console.log([...testStr].length);
// 4

使用 Array.from 替换,并且封装一下:

function unicodeLength(str) {
  return Array.from(str).length;
}
原文转自:https://fe.ecool.fun/topic/53de0582-783d-490b-b7ca-7a20e9d13cb8