Intl.Segmenter
Intl.Segmenter 对象支持区分区域的文本分段,使您能够从字符串中获取有意义的项(字素、单词或句子)。
试一试
const segmenterFr = new Intl.Segmenter("fr", { granularity: "word" });
const string = "Que ma joie demeure";
const iterator = segmenterFr.segment(string)[Symbol.iterator]();
console.log(iterator.next().value.segment);
// Expected output: 'Que'
console.log(iterator.next().value.segment);
// Expected output: ' '
构造函数
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® 2026 国际化 API 规范 # segmenter-objects |
浏览器兼容性
加载中…