Skip to Content
Nextra 4.0 is released 🎉
笔记Es6ES6中字符串新增了哪些拓展?

ES6中字符串新增了哪些拓展?

字符的 Unicode 表示法

ES6 加强了对 Unicode 的支持,允许采用\uxxxx形式表示一个字符, 其中xxxx表示字符的 Unicode 码点。

"\u0061" // "a"

字符串的遍历器接口

ES6 为字符串添加了遍历器接口(详见《Iterator》一章), 使得字符串可以被for...of循环遍历。

for (let codePoint of 'foo') { console.log(codePoint) } // "f" // "o" // "o"

模板字符串

传统的 JavaScript 语言,输出模板通常是这样写的(下面使用了 jQuery 的方法)

$('#result').append( 'There are <b>' + basket.count + '</b> ' + 'items in your basket, ' + '<em>' + basket.onSale + '</em> are on sale!' );

上面这种写法相当繁琐不方便, ES6 引入了模板字符串${}解决这个问题。

$('#result').append(` There are <b>${basket.count}</b> items in your basket, <em>${basket.onSale}</em> are on sale! `);

实例方法

  • String.prototype.includes()
  • String.prototype.startsWith()
  • String.prototype.endsWith()
  • String.prototype.repeat()
  • String.prototype.padStart(), String.prototype.padEnd()
  • String.prototype.trimStart(), String.prototype.trimEnd()

includes(), startsWith(), endsWith()

传统上, JavaScript 只有indexOf方法, 可以用来确定一个字符串是否包含在另一个字符串中。ES6 又提供了三种新方法。

  • String.prototype.includes():返回布尔值, 表示是否找到了参数字符串
  • String.prototype.startsWith():返回布尔值, 表示参数字符串是否在原字符串的头部
  • String.prototype.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

repeat()`

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

'x'.repeat(3) // "xxx" 'hello'.repeat(2) // "hellohello" 'na'.repeat(0) // ""

padStart()`, padEnd()

ES2017 引入了字符串补全长度的功能。如果某个字符串不够指定长度, 会在头部或尾部补全。padStart()用于头部补全, padEnd()用于尾部补全

'x'.padStart(5, 'ab') // 'ababx' 'x'.padStart(4, 'ab') // 'abax' 'x'.padEnd(5, 'ab') // 'xabab' 'x'.padEnd(4, 'ab') // 'xaba'

trimStart()`, trimEnd()

ES2019 对字符串实例新增了trimStart()trimEnd()这两个方法。它们的行为与trim()一致, trimStart()消除字符串头部的空格, trimEnd()消除尾部的空格。它们返回的都是新字符串,不会修改原始字符串。

const s = ' abc '; s.trim() // "abc" s.trimStart() // "abc " s.trimEnd() // " abc"
Last updated on