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对所有的\都进行了转义,也就是说在\前加了一个\