ES6字符串的扩展

1.1 字符的Unicode表示法

javascript允许采用\uxxxx形式表示一个字符,其中xxxx表示字符的Unicode码点,但是这种表示法只限于码点在\u0000~\uFFFF之间的字符。超出这个范围的字符,必须用两个双字节的形式表达,如:"\u0061"表示a,但如果表示为"\u20BB7",那么JavaScript会理解为\u20BB+7,此时由于\u20BB是一个不可打印字符,所以只会显示一个空格,后面跟个7。
ES6对这一点做出了改进,只要将码点放入大括号,就能正确解读该字符,如\u{1F680}==\uD83D\uDE80。

1.2 codePointAt()

ES6提供了codePointAt()方法,能够正确处理4个字节存储的字符,返回一个字符的码点
codePointAt方法返回的是码点的十进制,如果想要十六进制的值,可以使用tostring方法转换一下。
codePointAt方法是测试一个字符是由2个字节还是4个字节组成的最简单的方法。
问题:codeAt()、String.fromCodePoint()、charCodeAt()和codePointAt()三者的作用与区别?
chatAt()——提取指定字符串.
String.fromCodePoint() 静态方法返回使用指定的代码点序列创建的字符串。
charCodeAt() 方法可返回指定位置的字符的 Unicode 编码。这个返回值是 0 - 65535 之间的整数。
codePointAt()——提取索引字符代码点.
codePointAt()方法返回一个 Unicode 编码点值的非负整数。

var s = '?a';
console.log(s.codePointAt(0));//134071
console.log(s.codePointAt(1).toString(16));//dfb7
console.log(s.charAt(0));//�
console.log(s.charCodeAt(0));//55362

1.3 String.fromCodePoint()

ES6提供了String.fromCodePoint方法,可以识别大于0xFFFF的字符。在作用上与codePointAt方法相反。

console.log(String.fromCodePoint(0x20BB7));//?

1.4 at()

由于charAt()方法不能识别码点大于0xFFFF的字符,所以ES6提出了at()方法。

1.5 normalize() 将字符的不同表示方法同一为同样的形式,称为Unicode正规化。

console.log('\u01D1'.normalize() === '\u004F\u030C'.normalize());//true

不过normalize目前不能识别3个或3个以上字符的合成。这种情况下,还是只能使用正则表达式,通过Unicode编号区间判断。

1.6 includes() startsWith() endsWith()

includes():返回布尔值,表示是否找到了参数字符串
startsWith():返回布尔值,表示参数字符串是否在源字符串的头部
endsWith():返回布尔值,表示参数字符串是否在源字符串的尾部
这三个方法都支持第二个参数,表示开始搜索的位置。

1.7 repeat()方法返回一个新字符串,表示将原字符串重复n次

console.log('x'.repeat(3));//xxx

1.8 padStart()、padEnd()

padStart()用于头部补全

console.log('x'.padStart(5,'ab'));//ababx

padEnd()用于尾部补全

1.9 模板字符串``

如果在模板字符串中需要引用反引号,则在其前面要用反斜杠\转义。

var greeting = `\`Yo\`World!`;
console.log(greeting);//`Yo`World!

trim()方法消除换行

var no =`
<ul>
    <li><li>
</ul>
`.trim();
console.log(no); 
 /*<ul>  
	<li><li>  
  </ul> */

扩展运算符( spread )是三个点(…)。它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列。

function tag(stringArr,...value){
console.log(...value);//Array(4) [1, 2, 3, 4]
}
tag('okk',[1,2,3,4]);//1 2 3
console.log(...[1, 2, 3])//1 2 3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值