Intl.Segmenter()
Baseline 2024
Newly available
Since April 2024, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.
Intl.Segmenter()
构造函数会创建一个 Intl.Segmenter
对象,该对象支持语言敏感的文本分割。
尝试一下
语法
参数
locales
可选-
带有 BCP 47 语言区域标记的一个字符串,或者一个这样的字符串数组。对于
locales
参数的一般形式和解释,参见语言区域识别和判定。 options
可选-
带有部分或全部以下属性的一个对象:
granularity
可选-
字符串。可选值如下:
"grapheme"
(默认)-
根据语言区域,将输入值按字(用户可以感知的字符)划分边界。
"word"
-
根据语言区域,将输入值按词划分边界。
"sentence"
-
根据语言区域,将输入值按句划分边界。
localeMatcher
可选-
将要使用的语言区域匹配算法。可选值如下:
"best fit"
(默认)-
运行时可能会选择一个可能比查找算法的结果更加合适的语言区域。
"lookup"
-
使用 BCP 47 查找算法来从
locales
参数中选择语言区域。对于locales
参数中的每一个语言区域,会返回第一个运行时支持的语言区域(有可能会移除用于限制区域的子标记,来找到一个支持的语言区域。换句话说,如果运行时支持"de"
但不支持"de-CH"
,用户传入的"de-CH"
可能就会以"de"
为结果进行使用)。
返回值
一个新的 Intl.Segmenter
实例。
示例
基础用法
下面的例子展示了如何计算在一个日语字符串中使用了多少个词汇(使用 String
提供的分割方法将得到错误的结果)。
js
const text = "吾輩は猫である。名前はたぬき。";
const japaneseSegmenter = new Intl.Segmenter("ja-JP", { granularity: "word" });
console.log(
[...japaneseSegmenter.segment(text)].filter((segment) => segment.isWordLike)
.length,
);
// 8,文本将会分割为 '吾輩'|'は'|'猫'|'で'|'ある'|'。'|'名前'|'は'|'たぬき'|'。'
规范
Specification |
---|
ECMAScript Internationalization API Specification # sec-intl-segmenter-constructor |
浏览器兼容性
BCD tables only load in the browser