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/

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章