Intl.Segmenter 对象现已成为 Baseline 的一部分

您现在可以使用 Intl.Segmenter 进行区分区域设置的文本分割,将字符串拆分为单词、句子或字形。

浏览器支持

  • Chrome: 87.
  • Edge: 87.
  • Firefox: 125.
  • Safari: 14.1.

来源

许多非拉丁语系语言(如中文和日语)不使用空格分隔单词。因此,使用 JavaScript 的 split() 方法按空格将文本拆分为单词会返回不正确的结果。

使用 Intl.segmenter() 构造函数创建新的 Intl.Segmenter 对象时,传入 locale 和选项,包括 granularity,它可以具有 "grapheme""word""sentence" 值。以下示例为日语创建了一个新的 Intl.Segmenter 对象,按单词拆分。

const segmenter = new Intl.Segmenter('ja-JP', { granularity: 'word' });

Intl.Segmenter 对象上使用文本字符串调用 segment() 方法会返回一个可迭代对象

const segments = segmenter.segment(str);
console.table(Array.from(segments));

请阅读 Polypane 博客上的 Using the Intl.Segmenter API,其中提供了关于如何使用此功能的精彩教程。

International Text Segmentation with Intl.Segmenter in JavaScript 提供了更多示例,包括如何将 Intl.Segmenter 与表情符号一起使用。