JavaScript Unicode字符串中字符个数计算(ES6)

由于JavaScript使用UTF-16(2个字节)作为一个单元来存储字符,对于一些字符串中包含:4字节或更多字节的字符,使用length就不能得到正确的字符个数。用如下方法可以很简单的获取字符串中精确的字符个数:

字符串的遍历器接口

ES6 为字符串添加了遍历器接口(详见《Iterator》一章),使得字符串可以被 for...of 循环遍历。
 

       function testString() {
            let str = "Hi?⚽?";
            // console.log(str.length); // output: 7

            // Calculate Character counts.
            // Way1:
            let tmpArr = [...str];
            console.log(`Way1: char count is ${tmpArr.length}`); // output: 5

            // Way2:
            let charCount = 0;
            for (const ch of str) {
                charCount++;
            }
            console.log(`Way2: char count is ${charCount}`); // output: 5
        }

这个遍历器最大的优点是可以识别大于 0xFFFF 的码点.

即,for...of循环遍历能够正确计算出一个字符串个各个字符,在该循环中加一个计数器即可算出字符个数。

 

一些讨论:

https://coolaj86.com/articles/how-to-count-unicode-characters-in-javascript/

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值