ES6学习笔记4--字符串的扩展

  • 字符的Unicode表示法

ES5允许采用  \uxxxx 形式表示一个字符。xxxx表示字符的Unicode码点.

\uxxxx 表示法只限于码点在 \u0000 ~ \uFFFF 之间的字符。超出这个范围的字符,必须用两个双字节的形式表示。

ES6 可以使用\u{xxxxx},将码点放入大括号中,可以正确解读该字符

//🧡 的 unicode U+1F9E1
/*(1)ES6*/
let a = "\u{1F9E1}"
a //"🧡"

/*(2)ES5仅支持 \uxxxx表示法,超过范围的必须用两个UTF-16码元来表示*/
let first = "\u{1F9E1}"[0].codePointAt(0).toString(16);  //d83e
let second = "\u{1F9E1}"[1].codePointAt(0).toString(16);  //dde1

let b = '\ud83e\udde1'  
b //"🧡"

//将UTF-32字元转换为两个UTF-16的表示法

function toUTF16(codePoint) {
    var TEN_BITS = parseInt('1111111111', 2);
    function u(codeUnit) {
        return '\\u'+codeUnit.toString(16).toUpperCase();
    }

    if (codePoint <= 0xFFFF) {
        return u(codePoint);
    }
    codePoint -= 0x10000;

    // Shift right to get to most significant 10 bits
    var leadingSurrogate = 0xD800 | (codePoint >> 10);

    // Mask to get least significant 10 bits
    var trailingSurrogate = 0xDC00 | (codePoint & TEN_BITS);

    return u
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值