ES6篇(4)字符串的新增方法


(1)String.fromCodePoint
ES5中String.fromCharCode()将Unicode编码转为字符,但这个方法不能识别码点大于0xFFFF的字符。
ES6提供了String.formCodePoint()方法可以识别码点大于0xFFFF的字符。
它的作用与下面的codePointAt()方法相反,需要注意的是fromCodePoint方法定义在String对象上,
而codePointAt方法定义在字符串的实例对象上。
(2)String.raw()
该方法返回一个斜杠都被转义(即斜杠前面再加一个斜杠)的字符串。如果原字符串已经转义,
那么String.raw()将会再次进行转义。
该方法常用于模板字符串的处理方法,该方法也可以作为函数使用。
(3)实例方法:codePointAt()
ES5提供charCodeAt()返回指定位置的字符串的Unicode编码,该方法无法正确返回4个字节存储
的字符,会分别返回前两个字节和后两个字节(把字符串长度误判为2);ES6 提供了codePointAt()方法,
能够正确处理 4 个字节储存的字符,返回一个字符的码点。
(4)实例方法:normalize()
许多欧洲语言有语调符号和重音符号。为了表示它们,Unicode 提供了两种方法。一种是直接提供带重音符号的字符,比如Ǒ(\u01D1)。另一种是提供合成符号(combining character),即原字符与重音符号的合成,两个字符合成一个字符,比如O(\u004F)和ˇ(\u030C)合成Ǒ(\u004F\u030C)。

这两种表示方法,在视觉和语义上都等价,但是 JavaScript 不能识别。
ES6 提供字符串实例的normalize()方法,用来将字符的不同表示方法统一为同样的形式,这称为 Unicode 正规化。
(5)实例方法:includes()、startsWidth()、endsWidth()
ES5用indexOf方法来确定一个字符串是否包含在另一个字符串中。
ES6新增了3种方法:
includes():返回布尔值,表示是否找到了参数字符串。
startsWidth():返回布尔值,表示参数字符串是否在原字符串的头部。
endsWidth():返回布尔值,表示参数字符串是否在原字符串的尾部。
这三种方法都支持第二个参数n,表示开始搜索的位置,但是endWith的第二个参数表示前n
个字符,而includes和startsWith表示从第n个位置到字符串结束。
(6)实例方法:repeat()
该方法返回一个新字符串,表示将原字符串重复n次;如果是小数,则被取整;如果repeat
的参数是负数或Infinity则会报错;如果是0到-1之间的小数则等同于0(因为先进行了取整运算)
参数NaN等同于0;如果参数是字符串,则先转换为数字。下面是例子:
'x'.repeat(3) // "xxx"
'hello'.repeat(2) // "hellohello"
'na'.repeat(0) // ""
'na'.repeat(2.9) // "nana"
'na'.repeat(Infinity)
// RangeError
'na'.repeat(-1)
// RangeError
'na'.repeat(-0.9) // ""
'na'.repeat(NaN) // ""
'na'.repeat('na') // ""
'na'.repeat('3') // "nanana"
(7)实例方法:padStart()、padEnd()
该方法提供字符串补全长度功能,如果某个字符串不够指定长度,会在头部或尾部补全。
padStart()用于头部补全,padEnd()用于尾部补全。
这两个方法都有两个参数,第一个参数是字符串补全生效的最大长度,第二个参数是用来补全的字符串。
如果原字符串的长度,等于或大于最大长度,则字符串补全不生效,返回原字符串。
如果用来补全的字符串与原字符串,两者的长度之和超过了最大长度,则会截去超出位数的补全字符串。
如果省略第二个参数,默认使用空格补全长度。
padStart()常见用途是为数值补全指定位数。下面是例子:
'x'.padStart(5, 'ab') // 'ababx'
'x'.padStart(4, 'ab') // 'abax'

'x'.padEnd(5, 'ab') // 'xabab'
'x'.padEnd(4, 'ab') // 'xaba
'xxx'.padStart(2, 'ab') // 'xxx'
'xxx'.padEnd(2, 'ab') // 'xxx'
'abc'.padStart(10, '0123456789')
'x'.padStart(4) // '   x'
'x'.padEnd(4) // 'x   '
'1'.padStart(10, '0') // "0000000001"
'12'.padStart(10, '0') // "0000000012"
'123456'.padStart(10, '0') // "0000123456"
'12'.padStart(10, 'YYYY-MM-DD') // "YYYY-MM-12"
'09-12'.padStart(10, 'YYYY-MM-DD') // "YYYY-09-12"
(8)实例方法:trimStart()、trimEnd()
trimStart()消除字符串头部的空格,trimEnd()消除尾部的空格。它们返回的都是新字符串,不会修改原始字符串。
除了空格键,这两个方法对字符串头部(或尾部)的 tab 键、换行符等不可见的空白符号也有效。
浏览器还部署了额外的两个方法,trimLeft()是trimStart()的别名,trimRight()是trimEnd()的别名。
(9)实例方法:matchAll()
matchAll()方法返回一个正则表达式在当前字符串的所有匹配。
阮一峰 ES6 字符串新增方法

ES5常见字符串方法

猜你喜欢

转载自blog.csdn.net/u012149906/article/details/91418199