Intl.Segmenter

基线 2024

新可用

2024 年 4 月起,此功能可在最新的设备和浏览器版本中使用。此功能可能无法在较旧的设备或浏览器中使用。

Intl.Segmenter 对象支持与语言环境相关的文本分段,使你能够从字符串中获取有意义的项目(音节、单词或句子)。

试试看

构造函数

Intl.Segmenter()

创建一个新的 Intl.Segmenter 对象。

静态方法

Intl.Segmenter.supportedLocalesOf()

返回一个数组,其中包含那些在不回退到运行时默认语言环境的情况下支持的提供的语言环境。

实例属性

这些属性是在 Intl.Segmenter.prototype 上定义的,由所有 Intl.Segmenter 实例共享。

Intl.Segmenter.prototype.constructor

创建实例对象的构造函数。对于 Intl.Segmenter 实例,初始值为 Intl.Segmenter 构造函数。

Intl.Segmenter.prototype[Symbol.toStringTag]

的初始值为 [Symbol.toStringTag] 属性为字符串 "Intl.Segmenter"。此属性用于 Object.prototype.toString()

实例方法

Intl.Segmenter.prototype.resolvedOptions()

返回一个新对象,其属性反映了在此 Intl.Segmenter 对象初始化期间计算的语言环境和粒度选项。

Intl.Segmenter.prototype.segment()

返回一个新的可迭代的 Segments 实例,表示根据此 Intl.Segmenter 实例的语言环境和粒度对字符串进行分段。

示例

基本用法和与 String.prototype.split() 的区别

如果我们要使用 String.prototype.split(" ") 对文本进行单词分段,如果文本的语言环境不使用单词之间的空格(日语、汉语、泰语、老挝语、高棉语、缅甸语等情况就是这样),我们将无法获得正确的结果。

js
const str = "吾輩は猫である。名前はたぬき。";
console.table(str.split(" "));
// ['吾輩は猫である。名前はたぬき。']
// The two sentences are not correctly segmented.
js
const str = "吾輩は猫である。名前はたぬき。";
const segmenterJa = new Intl.Segmenter("ja-JP", { granularity: "word" });

const segments = segmenterJa.segment(str);
console.table(Array.from(segments));
// [{segment: '吾輩', index: 0, input: '吾輩は猫である。名前はたぬき。', isWordLike: true},
// etc.
// ]

规范

规范
ECMAScript 国际化 API 规范
# segmenter-objects

浏览器兼容性

BCD 表仅在浏览器中加载