|
字符串解读
es6加强了对Unicode 的支持,允许\uxxxx的形式展现一个字符,例如:- console.log('\u0061'); // 打印 a
复制代码 \u后面的为字符的 Unicode 码点 \u 后面4位 xxxx
但是这种写法只识别 \u0000 到 \UFFFF 之间的字符,超出需要使用两个双字节表示,例如:- console.log('\uD842\uDFB7'); // 打印 吉
复制代码 如果说超出了\uxxxx字节的范围,则为两个字节的拼接,例如:- console.log('\u20BB7'); // 输出 ' 7' \u20BB系统识别为空
- console.log('\u00617'); // 输出 'a7'
复制代码 \u0061识别为a,由于7超出了这个字节,所以为\u0061+7,结果为a7
es6对 Unicode 的支持进行了加强,如果超出了两个字节,放入大括号内即可正常解读- console.log("\u{20BB7}"); // 打印 吉
- // 只要将码点放入大括号即可正确解读
- console.log('\u{41}\u{42}\u{43}'); // 输出ABC
复制代码 大括号与双字节的写法是等价的- console.log('\u{1F680}' == '\uD83D\uDE80'); // 大括号与4字节的写法等价 输出true
复制代码 js对字符的几种表现方法:- console.log('\z' === 'z');
- console.log('\172' === 'z');
- console.log('\x7A' === 'z');
- console.log('\u007A' === 'z');
- console.log('\u{7A}' === 'z');
- console.log('z' === 'z');
复制代码 字符串的遍历
字符串遍历for...of - for (let codePoint of 'foo') {
- console.log(codePoint); // f o o
- }
复制代码 其实一般的遍历,例如for,也可以遍历字符串,但是for无法识别大于0xFFFF的码点,而for...of则可以识别- let text = String.fromCodePoint(0x20BB7)
-
- // for循环
- for (let i = 0; i < text.length; i++) {
- console.log(text[i]); // ' ' 空
- }
-
- // for---of可以识别 大于0xFFFF的码点 , 而传统的for无法识别
- for (let i of text) {
- console.log(i); // 吉
- }
复制代码 有些时候,我们在用JSON.stringify转字符串的时候,发现转译的字符串多了几个\
根据标准,JSON数据必须是 UTF-8 编码。但是JSON.stringify()方法有可能返回不符合 UTF-8 标准的字符串。
UTF-8 标准规定,0xD800到0xDFFF之间的码点,不能单独使用,必须配对使用。比如,\uD834\uDF06是两个码点,但是必须放在一起配对使用,代表字符
来源:https://www.cnblogs.com/wang-fan-w/p/17119878.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作! |
|