Intl.Segmenter() コンストラクター
Intl.Segmenter()
コンストラクターは、ロケールに依存したテキスト分割を可能にする Intl.Segmenter
オブジェクトを生成します。
試してみましょう
構文
引数
locales
省略可-
BCP 47 の言語タグを持つ文字列、またはそのような文字列の配列。引数
locales
の一般的な形式と解釈については、Intl
のページを参照してください。 options
省略可-
以下のプロパティの一部または全部を持つオブジェクト。
granularity
省略可-
文字列。使用可能な値は以下の通り。
"grapheme"
(default)-
ロケールに応じた書記素クラスター(ユーザーが認識する文字)の境界で、入力を分割します。
"word"
-
ロケールに応じた単語の境界で、入力を分割します。
"sentence"
-
ロケールに応じた文の境界で、入力を分割します。
localeMatcher
省略可-
使用するロケールマッチングアルゴリズム。使用できる値は以下の通り。
"best fit"
(default)-
ランタイムは、ルックアップアルゴリズムの結果よりも適したロケールを選択する可能性があります。
"lookup"
-
BCP 47 Lookup algorithm を使用して、
locales
からロケールを選択します。locales
に含まれる各ロケールについて、ランタイムは最初にサポートされるロケールを返します(場合によっては、サポートされるロケールを見つけるために、与えられたロケールタグのサブタグの制限を取り除きます。つまり、locales
として"de-CH"
を指定すると、"de"
はサポートされているが"de-CH"
はサポートされていない場合、"de"
を使用することになる可能性があります)。
返値
新しい Intl.Segments
のインスタンスです。
例
基本的な使い方
次の例は、日本語を使って文字列中の単語を数えるものです(String
のメソッドで文字列を分割すると不正確な結果が得られます)。
js
const text = "吾輩は猫である。名前はたぬき。";
const japaneseSegmenter = new Intl.Segmenter("ja-JP", { granularity: "word" });
console.log(
[...japaneseSegmenter.segment(text)].filter((segment) => segment.isWordLike)
.length,
);
// logs 8 as the text is segmented as '吾輩'|'は'|'猫'|'で'|'ある'|'。'|'名前'|'は'|'たぬき'|'。'
仕様書
Specification |
---|
ECMAScript Internationalization API Specification # sec-intl-segmenter-constructor |
ブラウザーの互換性
BCD tables only load in the browser