ES 6 : 字符串的扩展
1. 字符的Unicode表示法
JavaScript允许表示\u0000—\uFFFF之间的字符。超出这个范围,必须用2个双字节的形式表达。如:"\u20BB7"是汉字 "𠮷" 的编码,要使用如下方法表示:
如果直接用"\u20BB7" 会表示成:
这是因为\u后面跟上超出范围的数值,JavaScript会理解成\u20BB+7。由于\u20BB是一个不可打印的字符,所以只会显示一个空格,后面跟一个7。而ES6允许将码点放入大括号,就能正确解读该字符。
下面的代码表明,大括号表示法与四字节的UTF-16编码是等价的。
至此,JavaScript共有 6 种方法表示字符串:
2. includes(),startsWith(),endsWith()
传统上,JavaScript中只有indexOf()方法可以用来确定一个字符串是否包含在另一个字符串中。ES6又提供了3中新方法。
● includes():返回布尔值,表示是否找到了参数字符串。
● startsWith():返回布尔值,表示参数字符串是否在源字符串的头部。
● endsWith():返回布尔值,表示参数字符串是否在源字符串的尾部。
这3个方法都支持第2个参数,表示开始搜索的位置。
上面的代码表示,使用第2个参数n时,endsWith的行为与其他两个方法有所不同。它针对前n个字符,而其他两个方法针对从第n个位置直到字符串结束的字符。
3. repeat(n)
repeat方法返回一个新的字符串,表示将元字符串重复n次。
如果是小数,会被取整:
如果repeat的参数是负数或者Infinity,会报错。
但如果参数是0到-1之间的小数,则等同于0,这是因为会先进行取整运算。0到-1之间的小数,取整以后等于-0,repeat视同为0。
参数NaN等同于0。
如果repeat的参数是字符串,则会先转换成数字。
4.padStart()、padEnd()
ES7推出了字符串补全长度的功能。如果某个字符串未达指定长度,会在头部或尾部补全。padStart用于头部补全,padEnd用于尾部补全。
'x'.padStart(5,'ab') // 'ababx'
'x'.padEnd(5,'ab') // 'xabab'
上面的代码中,padStart和padEnd分别接受两个参数,第一个参数用来指定字符串的最小长度,第二个参数则是用来补全的字符串。
如果原字符串的长度等于或大于指定的最小长度,则返回原字符串。
'xxx'.padStart(2,'ab') // 'xxx'
如果省略第二个参数,则会用空格来补全。
'x'.padStart(4) // ' x'