Intl.Segmenter()
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
提供的分割方法将得到错误的结果)。
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