ES 提案:String.prototype.trimStart / String.prototype.trimEnd

这篇博客文章主要解释 ECMAScript 2019 的提案 “String.prototype.trimStart / String.prototype.trimEnd”(由 Sebastian Markbåge 提出)。介绍 .trimStart().trimEnd() 用于分别删除字符开始和结束的空白字符

字符串方法 .trimStart() 和 .trimEnd()

JavaScript 一直以来提供删除字符串左右两边的空白字符:

'  abc  '.trim(); // 'abc'

新的提案添加仅仅削减字符串的开始或结束空白字符的方法:

'  abc  '.trimStart(); // 'abc  '

'  abc  '.trimEnd(); // '  abc'

旧的字符串方法 .trimLeft() 和 .trimRight()

大多数的浏览器拥有字符串方法 .trimLeft() and .trimRight()。这两个方法添加进 ECMAScript 标准附录 B(作为 .trimStart().trimEnd() 的别名):网络浏览器和可选的其它地方的必须功能。

至于核心标准,该提案选择了不同的名称,因为对于程序脚本而言 “start”(开始)和 “end”(结束)比从左到右的人类语言 “left” 和 “right” 更有意义。基于此认知,标准的选择与 .padStart().padEnd() 一致。

什么计算为空白字符

会被 trim, trimLeft 和 trimRight 删除的空白字段是:

  • 空白代码点(规范):
    • <TAB> (制表符,U+0009)
    • <VT> (线表符,U+000B)
    • <FF> (换页符,U+000C)
    • <SP> (空格,U+0020)
    • <NBSP> (无间断空白符,U+00A0)
    • <ZWNBSP> (零宽度无间断空白字符,U+FEFF)
    • 任何在空白分隔符(Zs)分类中的其它空白属性的 Unicode 字符。
  • 行结束代码点(规范):
    • <LF> (换行,U+000A)
    • <CR> (回车,U+000D)
    • <LS> (行分隔符,U+2028)
    • <PS> (段落分隔符,U+2029)