es6 字符串扩展

在扩展的字符串中有几个方法是es7的一个提案,如果不处理兼容性会导致编译无法通过,处理兼容性的方法:安装一个处理兼容性的库  npm  install  babel-polyfill  --save-dev

{

     console.log( 'a', '\uBB61' );//  뭡

     console.log('S','\uBB617');//  뭡7  \uBB617大于两个字节的字符,将前四个当做一个字符,第5个之后的当做其他字符

     console.log('S','\u{20BB7}');//𠮷

}

//处理大于两个字节的字符

{

     //es5 处理  charAt和charCodeAt对处理大于两个字节的字符不准确

     let  s  = '𠮷';

     console.log('length',  s.length);   //  2

     console.log('char-0',  s.charAt(0));  //  乱码

     console.log('char-1',   s.charAt(1));    //    乱码

     console.log('atchar-0',   s.charCodeAt(0));   //  55362

     console.log('atchar-1',  s.charCodeAt(1));    //  57271

     //es6 处理  codePointAt可准确的处理任何字符

     let   s1  =  '𠮷a';

     console.log('length',  s1.length);   //    3

     console.log('code0',  s1.codePointAt(0));   //    134071

     console.log('code0 tostring',  s1.codePointAt(0).toString(16));   //  20bb7

     console.log('code1',  s1.codePointAt(1));   //    57271  codePointAt(1):只取后两个字节

     console.log('code2',  s1.codePointAt(2));   // 97  -- a

}

{

     //es5 方法  fromCharCode 处理大于两个字节的字符 为乱码

    console.log(String.fromCharCode("0x20bb7"));   //  ஷ

    //es6 方法  fromCodePoint 处理大于两个字节的字符 准确

    console.log(String.fromCodePoint("0x20bb7"));  // 𠮷

}

{

     let  str  =  '\u{20bb7}abc';

    //es5  处理

    for(  let i = 0; i < str.length;  i++){

         console.log('es5',str[i]);//� �  a  b  c

     }

    //es5  处理

    for(  let  code  of  str ){

        console.log('es6', code);  //𠮷a  b  c

   }

}

//字符串的包含,起始,结束

{

     let  str  =  "string";

     console.log('includes',  str.includes('c'));   //false

     console.log('startsWith',    str.startsWith('str'));   //true

     console.log('endsWith',    str.endsWith('g'));   //true

}

//字符串重复显示

{

      let  str  =  "abc";

     console.log(str.repeat(2));   //  abcabc

}

//使用 `${}`进行简单数据拼接

{

     let   name  =  "line";

    let   info  =  "hello world";

    let  n  =  `i am  ${name},${info}`;  // i am line,hello world

   console.log(n);

}

//字符串数字补零

{

     console.log('1'.padStart(2,'0'));// 01

     console.log('12'.padStart(2,'0'));// 12

     console.log('1'.padEnd(2,'0'));// 10

     console.log('12'.padEnd(2,'0'));// 12

}

//标签模板

{

      let  user  =  { 

                   name:"list",

                  info:"hello world"

    };

    abc`i am${user.name} ${user.info}`;

    console.log('aaa',abc`i am${user.name},${user.info}`);

    //s :标签模板  v1:第一个参数 user.name  v2:第二个参数 user.info

    function   abc(s,v1,v2){

           console.log("abc", s,v1,v2);   // s: ["i am ", " ", ""]  v1:list  v2: hello world

           return  s+v1+v2;

   }

}

// String.raw    对\进行转义

{

      console.log(String.raw`Hi\n${1+2}`);   // \n换行符没有生效

      console.log(`Hi\n${1+2}`);   //  \n换行符生效

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容