var name = "我就是王汉炎";//目标字符串 name.endsWith('我'); //false,不在尾部位置 name.endsWith('炎'); //true,在尾部位置 name.endsWith('炎',5); //false,只针对前5个字符 name.endsWith('炎',6); //true,针对前6个字符
javascript中,一个字符固定为2个字节,对于那些需要4个字节存储的字符,javascript会认为它是两个字符,此时它的字符长度length为2。如字符:"𠮷",就是一个需要4个字节存储,length为2的字符。这会有什么问题呢?对于4字节的字符, javascript无法正确读取字符,我们来试试看。
var str1 = "前端"; var str2 = "𠮷"; str1.length; //length为2 str2.length; //length为2 str1.charAt(0); //前 str1.charAt(1); //端 str2.charAt(0); //'�' str2.charAt(1); //'�'
可以看到,str1和str2的长度length都是2,因为字符:"𠮷"是一个4字节的字符,使用charAt函数(charAt() 方法可返回指定位置的字符)能正确读取字符串str1的字符,但无法正确读取4个字节的字符,此时返回结果出现了乱码。
但是,如果我们使用ES6给我们提供的codePointAt( )函数,就可以处理这种4个字节的字符了,我们来看看怎么使用
var str = "𠮷"; str.codePointAt(); //结果:134071
对于这个长度length为2字符:"𠮷",codePointAt( )方法可以正确地识别出它是个4个字节的字符,并且能正确地返回它的码点的十进制数:134071,这个数字抓换成16进制就是20bb7,对应的Unicode编码则是\u20bb7。
String.fromCodePoint( )函数:函数的参数是一个字符对应的码点,返回的结果就是对应的字符,哪怕这个字符是一个4字节的字符,也能正确实现。
正好可以利用上面得到的10进制数字134071反推一下。
String.fromCodePoint(134071); //结果:"𠮷"
String.raw( )函数;看函数名raw是未加工的的意思,正如这个函数的作用一样:返回字符串最原始的样貌,即使字符串中含有转义符,它都视而不见,直接输出。
console.log(`hello\nworld`); //输出:hello world console.log(String.raw`hello\nwolrd`); //输出:hello\nwolrd
总结:ES6给字符串带来了很多实用性的扩展:模板字符串,标签模板,repeat函数、includes函数,startsWith函数,endsWith函数,codePointAt函数,String.fromCodePoint函数,String.raw函数。
以上这篇es6 字符串String的扩展(实例讲解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
您可能感兴趣的文章: