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\n${1+2}`));

console.log(`Hi\n${1+2}`);

 

结果为

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

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

 

posted @ 2019-06-25 15:08  ellenxx  阅读(269)  评论(0编辑  收藏  举报