ES6:字符串新增的方法

288 阅读3分钟

String.fromCodePoint()

  • 用于从 Unicode 码点返回对应字符,ES6中可以识别大于0xFFFF的字符
String.fromCodePoint(0x20BB7)
// "𠮷"
String.fromCodePoint(0x78, 0x1f680, 0x79) === 'x\uD83D\uDE80y'
// true

String.raw()

  • 该方法返回一个斜杠都被转义(即斜杠前面再加一个斜杠)的字符串
String.raw`Hi\u000A!`;
// 实际返回 "Hi\\u000A!",显示的是转义后的结果 "Hi\u000A!"

实例方法:codePointAt()

  • ES6 提供了codePointAt()方法,能够正确处理 4 个字节储存的字符,返回一个字符的码点。
  • codePointAt()方法返回的是码点的十进制值
  • codePointAt()方法的参数,是字符在字符串中的位置(从 0 开始)。

实例方法:normalize()

  • ES6 提供字符串实例的normalize()方法,用来将字符的不同表示方法统一为同样的形式,这称为 Unicode 正规化。
	'\u01D1'.normalize() === '\u004F\u030C'.normalize()
	// true
  • normalize方法可以接受一个参数来指定normalize的方式,参数的四个可选值如下。
    • NFC,默认参数,表示“标准等价合成”(Normalization Form Canonical Composition),返回多个简单字符的合成字符。所谓“标准等价”指的是视觉和语义上的等价。
    • NFD,表示“标准等价分解”(Normalization Form Canonical Decomposition),即在标准等价的前提下,返回合成字符分解的多个简单字符。
    • NFKC,表示“兼容等价合成”(Normalization Form Compatibility Composition),返回合成字符。所谓“兼容等价”指的是语义上存在等价,但视觉上不等价,比如“囍”和“喜喜”。(这只是用来举例,normalize方法不能识别中文。)
    • NFKD,表示“兼容等价分解”(Normalization Form Compatibility Decomposition),即在兼容等价的前提下,返回合成字符分解的多个简单字符。

实例方法:includes(), startsWith(), endsWith()

  • ES6 又提供了三种新方法。

    • includes():返回布尔值,表示是否找到了参数字符串。
    • startsWith():返回布尔值,表示参数字符串是否在原字符串的头部。
    • endsWith():返回布尔值,表示参数字符串是否在原字符串的尾部。
let s = 'Hello world!';

s.startsWith('Hello') // true
s.endsWith('!') // true
s.includes('o') // true
  • 这三个方法都支持第二个参数,表示开始搜索的位置。
let s = 'Hello world!';

s.startsWith('world', 6) // true
s.endsWith('Hello', 5) // true
s.includes('Hello', 6) // false
  • endsWith的第二个参数表示针对前n个字符进行搜索

实例方法:repeat()

  • repeat方法返回一个新字符串,表示将原字符串重复n次。
  • 如果参数是小数则会被取整
  • 如果参数是负数或Infinity,会报错

实例方法:padStart(),padEnd()

  • padStart用于字符串的头部补全,第一个参数为补全后的字符串长度,第二个参数为用于补全的字符串
  • padEnd用于尾部补全
'x'.padStart(5, 'ab') // 'ababx'
'x'.padStart(4, 'ab') // 'abax'

'x'.padEnd(5, 'ab') // 'xabab'
'x'.padEnd(4, 'ab') // 'xaba'
  • 如果原字符串长度大于参数指定长度则返回原字符串
  • 如果用来补全的字符串与原字符串,两者的长度之和超过了最大长度,则会截去超出位数的补全字符串。
  • 如果省略第二个参数,默认使用空格补全长度。

实例方法:trimStart(),trimEnd()

  • trimStart()消除字符串头部的空格,trimEnd()消除尾部的空格。它们返回的都是新字符串,不会修改原始字符串。
  • 除了空格键,这两个方法对字符串头部(或尾部)的 tab 键、换行符等不可见的空白符号也有效。

实例方法:matchAll()

  • matchAll()方法返回一个正则表达式在当前字符串的所有匹配,详见《正则的扩展》的一章。