电话: 邮箱:
博 学 而 笃 志   切 问 而 近 思 SEEK BROAD KNOWLEDGE · ASK EARNESTLY

银河资讯

银河资讯

银河国际游戏平台app Javascript系列25: 在 JS 中赢得字符串的 “位数”的几种材干

发布日期:2026-05-16 05:52 来源:未知 作者:admin 浏览次数:

银河国际游戏平台app Javascript系列25: 在 JS 中赢得字符串的 “位数”的几种材干

在 JavaScript 中赢得字符串的 “位数”(字符数)有多种材干,中枢分袂在于是否能正确科罚 Unicode 额外字符(如 emoji、疏远字)。

以下是正式默契和最好本质:

一、最常用:length 属性(基础场景)

语法

字符串.length

阐发

这是 JavaScript 原生提供的只读属性,不是材干,无需加括号

计数轨则:按UTF-16 代码单位统计,金沙JinSha(中国)娱乐网入口每个 BMP 平面(基本多道话平面)字符占 1 个代码单位

适用场景:仅包含 ASCII 字符、中语、日文、韩文等常见字符的字符串

示例

console.log("abc".length); // 3(英翰墨母)

console.log("你好全国".length); // 4(中语)

console.log("123456".length); // 6(数字)

console.log("a1b2c3".length); // 6(夹杂)

二、⚠️ 致命坑点:length 对额外字符计数异常

length 无法正确识别占 2 个 UTF-16 代码单位的字符,银河国际游戏平台app会导致计数翻倍:

Emoji 色彩(如、❤️、)

疏远汉字(如、、)

额外象征(如、)

异常示例

console.log("".length); // 2(内容1个字符)

console.log("❤️".length); // 4(内容2个字符)

console.log("".length); // 2(内容1个疏远字)

console.log("ab".length); // 4(内容3个字符)

三、正确赢得所有字符数(含额外字符)

材干 1:ES6 推广运算符 [...str].length(保举)

运用 ES6 的迭代器特质,能正确拆分 Unicode 字符,性能优秀且写法松懈。

console.log([...""].length); // 1(正确)

console.log([..."❤️"].length); // 2(正确)

NBA篮球投注app官网下载

console.log([..."ab"].length); // 3(正确)

console.log([...""].length); // 3(正确)

材干 2:Array.from(str).length(兼容性更好)

功能与推广运算符十足一致,对旧环境的兼容性略好(需 ES6 救援)。

console.log(Array.from("").length); // 3

console.log(Array.from("你好全国").length); // 5

材干 3:正则抒发式 /./u 匹配(备用)

使用带u美艳的正则抒发式匹配所有 Unicode 字符,再统计数目。

function getCharCount(str) {

return (str.match(/./gu) 银河国际游戏平台app