翼度科技»论坛 编程开发 JavaScript 查看内容

字符串的解读和标签模板

3

主题

3

帖子

9

积分

新手上路

Rank: 1

积分
9
字符串解读

es6加强了对Unicode 的支持,允许\uxxxx的形式展现一个字符,例如:
  1. console.log('\u0061'); // 打印 a
复制代码
\u后面的为字符的 Unicode 码点   \u 后面4位 xxxx
但是这种写法只识别 \u0000 到 \UFFFF 之间的字符,超出需要使用两个双字节表示,例如:
  1. console.log('\uD842\uDFB7'); // 打印 吉
复制代码
如果说超出了\uxxxx字节的范围,则为两个字节的拼接,例如:
  1. console.log('\u20BB7'); // 输出 ' 7'   \u20BB系统识别为空
  2. console.log('\u00617'); // 输出 'a7'   
复制代码
\u0061识别为a,由于7超出了这个字节,所以为\u0061+7,结果为a7


es6对 Unicode 的支持进行了加强,如果超出了两个字节,放入大括号内即可正常解读
  1. console.log("\u{20BB7}"); // 打印 吉
  2. // 只要将码点放入大括号即可正确解读
  3. console.log('\u{41}\u{42}\u{43}'); // 输出ABC
复制代码
大括号与双字节的写法是等价的
  1.   console.log('\u{1F680}' == '\uD83D\uDE80'); // 大括号与4字节的写法等价 输出true
复制代码
js对字符的几种表现方法:
  1. console.log('\z' === 'z');
  2. console.log('\172' === 'z');
  3. console.log('\x7A' === 'z');
  4. console.log('\u007A' === 'z');
  5. console.log('\u{7A}' === 'z');
  6. console.log('z' === 'z');
复制代码
字符串的遍历

字符串遍历for...of
  1.   for (let codePoint of 'foo') {
  2.      console.log(codePoint); // f o o
  3.    }
复制代码
其实一般的遍历,例如for,也可以遍历字符串,但是for无法识别大于0xFFFF的码点,而for...of则可以识别
  1. let text = String.fromCodePoint(0x20BB7)
  2. // for循环
  3.     for (let i = 0; i < text.length; i++) {
  4.          console.log(text[i]); // ' ' 空
  5.       }
  6.       
  7. // for---of可以识别 大于0xFFFF的码点 , 而传统的for无法识别
  8.     for (let i of text) {
  9.         console.log(i); // 吉
  10.      }
复制代码
有些时候,我们在用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】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具