在 ES11 (2020) 中,提供了一些新增的字符串特性,其中许多特性主要是来改善处理 Unicode 字符的效率和效果。Unicode 是一种字符编码标准,用于表示世界各种语言的字符,任何时候,一个可读的字符都可以被转化为 Unicode 字符序列。
1. 字符串 .matchAll() 方法
在 ES11 中,.matchAll() 方法被加入到了字符串对象中。它返回一个迭代器对象,包含匹配所有正则表达式的结果。
示例代码:
const str = "Hello, world!"; const re = /\w+/g; const matches = str.matchAll(re); for (const match of matches) { console.log(match); }
输出结果:
["Hello"] ["world"]
在示例代码中,.matchAll() 方法返回一个迭代器对象,可以直接在 for 循环中使用。这个方法会将每一个匹配到的单词返回出来。
2. 字符串 .replaceAll() 方法
在 ES11 中,.replaceAll() 方法被加入到了字符串对象中。它允许将一个字符串中的所有匹配项都替换成另一个字符串。
示例代码:
const str = "Hello, world!"; const replaced = str.replaceAll("o", "0"); console.log(replaced);
输出结果:
Hell0, w0rld!
在示例代码中,.replaceAll() 方法将所有的 "o" 替换成 "0"。
3. 字符串 Unicode 转义
在 ES11 中,可以用 \u 转义序列来编写 Unicode 字符串。
示例代码:
const str = "\u{1F600}"; console.log(str);
输出结果:
😂
在示例代码中,Unicode 转义序列被用于表示一个笑脸表情的 Unicode 字符。
4. 字符串 Unicode 正则表达式
在 ES11 中,支持了 Unicode 版本的正则表达式。
示例代码:
const str = "😂 Hello, world!"; const regex = /\p{Emoji}/gu; console.log(str.match(regex));
输出结果:
["😂"]
在示例代码中,\p{Emoji} 表示匹配一个 Unicode 表情符号的字符类,加上 g 和 u 两个标识符,可以进行全局匹配和使用 Unicode 版本的正则表达式。
结论
ES11 增加的字符串特性大部分都是为了更好地处理 Unicode 字符,并且加入了 Unicode 正则表达式的支持。通过这些新增特性,我们可以更好地处理 Unicode 编码的字符串,提高代码的效率和质量。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/672054402e7021665e01bcc3