zoukankan      html  css  js  c++  java
  • es6-字符串扩展

    1.Unicode表示法

    {
    
            console.log('a','u0061');//打印出“a,a”
            console.log('a','u20BB7');//打印出“a,*7”,*是未识别的       
    }

    因为u20BB7长度超出了16进制中字母字符串范围,所以会被看做是两个字符,前四个20BB是一个字符,7是一个字符。

    要想让其变成一个字符,可以用大括号个包起来

    console.log('s','u{20BBB7}');
    打印出来是
    

    我们来计算一下长度
    

    结果length为2

    这是因为s的码值是大于两个字节的,这个时候就把它处理成四个字节,在计算字节的时候,每两个字节就算成一个长度,所以为2。

    ES5有一个方法叫charArt

    console.log('0',s.charArt(0));
    console.log('1',s.charArt(1));

    这里的意思是取s第一个,第二个位置的字符

    console.log('at0',s.charCodeArt(0));
    console.log('at0',s.charCodeArt(1));

    这里是取码值的

    可以看出这里的处理是不到位的

    我们按照ES6的方法来处理

    这里codePointAt()是取码值,然后用toString(16)来看码值对应的16进制的字符

    这里还有一种方法

    fromCharCode("ox20bb7");//es5
    
    formCodePoint("ox20bb7");//es6

    看能不能处理大于两个字节的字符

    明显第一个是乱码

    第二个能处理

    2.遍历接口

    let str='u{20bb7}abc';
    
    for(let i=0;i<str.lenth;i++){
      console.log('es5',str[i]);
    }//es5
    
    for(let code of str)
    {
        console.log('es6',code);
    }//es6

    1.判断字符串中是否包含某些字符,还有是不是以某些字符为起始的或者是截止的

    {
    
      let str="string";
    
       console.log('includes',str.includes("r"));//看str里面是否有包含“r”字符的
    
    }

    结果为true

    console.log('includes',str.includes("c"));

    结果是false

    {
    
    let str="string";
    
    console.log('start',startsWith('str'));//判断字符串是否以str为起始
    
    }

    结果是true

    console.log('end',endsWith('ng'));//判断字符串是否以ng为结束

    结果是true

    2.我们想要某字符串重复两次

    {
    
    let str="abc";
    
    console.log(str.repeat(2));//2为出现的次数f
    
    }

    结果为abcabc

    3.模板字符串

    键盘数字1左边的按键``

    1. 

    {
    
    let  name="list";
    
    let info="hello world";
    
    let m=`i am ${name},${info}`;//数据项要通过$和大括号包起来
    
    }

    这样就把字符串的模板内容和数据结合了起来

    还可以使用对象

    let user={
    
    name:'list',
    
    info:'hello world'
    
    };

    2.es7的一个草案,现在可能要加库才能使用

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

    结果为01

    这段代码的意思是:这是一个补白的作用,这个API返回的要求,就是padStart的第一个参数就是要求的长度,也就是2,如果长度不够,就补第二个参数,这里是“0”,这个可以运用在选日期上,比如3月,我们想表示03,3长度不够,就补0,上去,像12长度够了,就不用补了。

    前面的是向前补白,向后补白也很简单

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

    结果为10

    3.标签模板

    {
    
    let user={
    
    name:'list',
    
    info:'hello world'
    
    };
    
    abc`i am ${user.name},${user.info}`;
    
    function abc(s,v1,v2)
    
    {
    
    console.log(s,v1,v2);
    
    }
    
    }

    出来的是这样

    i am 后面有很多空格

    我们打印一下这个

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

    这种方法可以防止xss攻击和在多语义时使用

    4.String.raw()

    console.log(String.raw(`Hi
    ${1+2}`));
    
    console.log(`Hi
    ${1+2}`);

    结果为

    可以看出,第一个中的 没有生效,第二个 生效了

    这是因为raw对所有的都进行了转义,也就是说在前加了一个

     

  • 相关阅读:
    你要的SSM(Spring+Springmvc+Mybatis)小项目来了!!!
    王爽《汇编语言》(第三版)实验10解析
    java1.8安装及环境变量配置
    王爽《汇编语言》(第三版)实验9解析
    王爽《汇编语言》(第三版)实验8解析(超详细)
    2020软件工程作业06
    鸽子开发组——冲刺日志(第四天)
    String 类中常用方法
    mysql
    array_merge和加号+的区别
  • 原文地址:https://www.cnblogs.com/ellen-mylife/p/11082921.html
Copyright © 2011-2022 走看看