ECMAScript 6中字符串的新特性

本文将覆盖在ECMAScript 6 (ES6)中,字符串的新特性。
type
status
date
slug
summary
tags
category
icon
password

Unicode 码位(code point)转义

Unicode字符码位的长度是21位[2]。而JavaScript的字符串,是16位的,以UTF-16的方式编码。因此,超出16位码长的码位范围(the Basic Multilingual Pane, BMP, 基本多文种平面)则用两个JavaScript字符表示。直到现在,如果想用数字指定这样的码位,需要两个叫Unicode转义符的东西。以下,则会以相应的码位(0x1F680)打印出一个火箭。
在ECMAScript 6中,有一个新的Unicode转义符,能让你指定任意的码位(不用再管是否是16位):

字符串的插值,多行及原始字符语法

模板字符串 [3]提供了3个有意思的特性。 1. 模板字符中,支持字符串插值:
2. 模板字符串可以包含多行:
3. 模板字符串可以是原始的: 若使用String.raw 作为模板字符串的前缀,则模板字符串可以是*原始(raw)*的。反斜线也不再是特殊字符,\n 也不会被解释成换行符:

字符串迭代那些事

字符串是可迭代的 [4],这就意味着可以使用for-of 去迭代其中的字符:
亦可用展开运行符(...) 将字符串转换成数组:

处理Unicode的码位

字符串迭代器,会以码位边界将字符串进行划分。这将导致迭代器的返回值,会是一个或两个字符:
这将会为我提供一个快速而简单的方法,去计算字符串Unicode码位的数量:
这同样会在,不包含基本多文种平面(non-BMP)码位的字符串操作中提供方便。如:反转字符串:
这是在firefox控制台中,两个反转之后的结果:
notion image

码位中数值

有一个新的方法 codePointAt() 将返回字符串,给定索引的码位数字值:
该方法在与字符串迭代操作结合时,也能很好的运行使用:
与方法codePointAt()相对的则是String.fromCodePoint()

包含与重要字符串的方法

有三个方法,可以检查一个字符串是否存在于另一个字符串:
每一个方法都有一个可选的,第二个参数。可以指定被搜寻字符串的开始或结束位置:
方法repeat() 则用以重复某个字符串:

所有新方法

模板字符串:

  • String.raw(callSite, ...substitutions) : string 用于产生*原始(raw)*字串(反斜杠不会被转义)。

Unicode和码位:

  • String.fromCodePoint(...codePoints : number[]) : string 将数字值码位转换成字符串。
  • String.prototype.codePointAt(pos) : number 返回码位开始位置的数字值(会包含一个或两个JavaScript的字符)。
  • String.prototype.normalize(form? : string) : string 不同的码位组合,最后可能有一致的显示。Unicode normalization可以将它们转化成同样的值,这会被叫做规范的表示方式(canonical representation)。这将有助于比较和查找字符串。在一般的文本之中,'NFC'是一种被推荐的形式。

查找字符串:

  • String.prototype.startsWith(searchString, position=0) : boolean 检查一个字符串是否以另一个字符串(searchString)开始。位置(position)指定从哪开始执行检查。
  • String.prototype.endsWith(searchString, endPosition=searchString.length) : boolean 检查一个字符串是否以另一个字符串(searchString)结尾。结束位置(endPosition)指定在哪执行结尾检查。
  • String.prototype.includes(searchString, position=0) : boolean 检查一个字符字符串是否包含另一个字符串(searchString)。位置(position)指定从哪开始检查。

重复字符串:

  • String.prototype.repeat(count) : string 返回给定字符串N次。

参考

  1. Using ECMAScript 6 today
  1. Chapter 24, “Unicode and JavaScript” of “Speaking JavaScript”; includes an introduction to Unicode.
  1. Template strings: embedded DSLs in ECMAScript 6
  1. Iterators and generators in ECMAScript 6
  1. 译自 New string features in ECMAScript 6
上一篇
2014毕业第一年的年终总结
下一篇
ECMAScript 6中的数组操作方法
Loading...
发布于 2015-2-13
修改于 2024-11-1
最新发布
群晖Docker安装部署自托管AppFlowy笔记应用
2024-12-14
PostgreSQL配置Fail2Ban防暴力破解
2024-11-19
PVE配置Fail2Ban防暴力破解Web登录与SSH连接
2024-11-19
单臂路由|N1盒子(OpenWRT)单线多拨实现网速叠加
2024-11-18
关于Sass 你需要知道的 Interpolation(插值)
2024-11-17
Ubuntu上的Git Server
2024-11-12