字符串长度

 

一 概述

 

JavaScript引擎使用UTF-16编码

UTF-16编码:每个字符使用1~2个编码单元表示(每个编码单元是两个字节)。通过每个编码单元的高6位来识别用1个编码单元还是2个编码单元。

UTF-8编码:每个字符使用1~4个字节表示。第一个字节以多少个1开头,就占用多少个字节。

 

二 字符串表示方法

 

'\u{20BB7}' // '𠮷'
'\uD842\uDFB7' // '𠮷'
'\u{20BB7}'==='\uD842\uDFB7' // true

 

三 字符串API

 

 1 length属性

返回字符串的编码单元数。

'j'.length // \u006A,1个编码单元
'吉'.length // \u5409,1个编码单元
'𠮷'.length // \uD842\uDFB7,2个编码单元

 

2 charCodeAt

返回当前位置的编码单元

'j𠮷'.charCodeAt(0) // 106(即0x6a)
'j𠮷'.charCodeAt(1) // 55362(即0xD842)

 

3 codePointAt

返回从当前位置开始的完整编码单元

'j𠮷'.codePointAt(0) // 106(即0x6a)
'j𠮷'.codePointAt(1) // 134071(即0x20BB7)(即\uD842\uDFB7)
'j𠮷'.codePointAt(2) // 57271(即0xDFB7)

 

四 遍历所有字符

 

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

 for...of循环可以正确识别出每个字符。

let str='吉ji𠮷';
for(let ch of str){
    console.log(ch);
}

 

 

五 度量单位

 

字符数

编码单元数

字节数

posted on 2018-12-27 14:32  沙滩海风  阅读(843)  评论(0)    收藏  举报

导航