ECMAScript 6(4)字符串与Unicode

    xiaoxiao2022-07-02  107

    目录

     

    字符串的扩展

    字符串的Unicode 表示法

    String.fromCodePoint()

    codePointAt()   

     


    字符串的扩展

    字符串的Unicode 表示法

    1. 首先,任意一个字符(比如数字、英文字符、汉字、符号等)都可以用Unicode的表示方法来表示。 2. 在js里为用“\u”加上四个十六进制字符来表示任意一个字符。 3. 在之前版本的js里,若要用Unicode表示一个字符,可以像以下这么做:console.log("\u0041");    //A 4. 注意,需要补足4位(前面补0)才能正常输出结果,否则会报错; 5. 如果有一个字符超出\u0000~\uFFFF所能表示的范围呢,那么旧版的写法是无法表示出这个字符的(原因是不能识别)。 6. 在ES6中,为了避免这个问题的出现,解决办法是用大括号{}将\u后的编码放在一起。 7. 这样如果不足4位则不用补零,超过4位也无须担心无法解析。如代码:

    "\u{41}";    //A "\u{20BB7}";    //��

    JavaScript 共有 6 种方法可以表示一个字符

    '\z' === 'z' // true '\172' === 'z' // true '\x7A' === 'z' // true '\u007A' === 'z' // true '\u{7A}' === 'z' // true

     简单来说就是 : 加上大括号,可以显示编码超过65535的字符;

    String.fromCodePoint()

    方法:

    String.fromCodePoint(num1[, ...[, numN]])

    说明:

    1. 简单来说,这个拿到编码,返回字符,类型是string; 2. 这个和fromCharCode()方法相比,可以返回编码大于65535的字符; 

    String.fromCodePoint(134071);     //��,参数可以是number   String.fromCodePoint("0x41");   //A,参数可以是字符串       String.fromCodePoint(65);       //A,作为十进制来识别      String.fromCodePoint(0x41);     //A,也可以直接是16进制的数字    String.fromCodePoint(0101);     //A,也可以是八进制的数字(0开头表示八进制),但注意八进制不能写为字符串        String.fromCodePoint(65, 65, 65); //AAA,多个参数直接被依次解释并放在同一个字符串里

    String.fromCharCode(0x20BB7) // "ஷ"

     

    codePointAt()   

    方法 : 

    str.codePointAt(position)

    说明:

    1. 简单来说,这个方法返回字符串中某个字符的Unicode编码。 2. 参数表示显示哪一个字符,类型是number,第一个字符是0,第二个是1。如果不存在则默认为0 3. 返回值是类型是number,十进制的Unicode编码。 4. 如果找不到(例如返回长度为1的字符串的第二个字符的编码),会返回undefined

    'ABC'.codePointAt(); //65 'ABC'.codePointAt(0); //65 'ABC'.codePointAt(1); //66 'ABC'.codePointAt(2); //67 'ABC'.codePointAt(3); //undefined

    和其类似的有方法 charCodeAt(),但这个只能返回编码是0~65535之间的字符的编码,如果超出这个范围,那么就无法正常显示了。但 codePointAt() 这个方法依然会正确显示结果。 

     

     

    最新回复(0)