Intl.Segmenter() コンストラクター

Intl.Segmenter() コンストラクターは、ロケールに依存したテキスト分割を可能にする Intl.Segmenter オブジェクトを生成します。

試してみましょう

構文

js
new Intl.Segmenter();
new Intl.Segmenter(locales);
new Intl.Segmenter(locales, options);

メモ: Intl.Segmenter()new を使用してのみ構築可能です。new を使わずに呼び出そうとすると TypeError が発生します。

引数

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,
);
// text は '吾輩'|'は'|'猫'|'で'|'ある'|'。'|'名前'|'は'|'たぬき'|'。' と分割されるので、8 が記録されます。

仕様書

Specification
ECMAScript Internationalization API Specification
# sec-intl-segmenter-constructor

ブラウザーの互換性

BCD tables only load in the browser