このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

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

Baseline 2024
最近利用可能

April 2024以降、この機能は最新のバージョンの端末およびブラウザーで動作します。古い端末やブラウザーでは動作しないことがあります。

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);
// 予想される結果: 'Que'

console.log(iterator.next().value.segment);
// 予想される結果: ' '

構文

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

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

引数

  • locales 省略可
  • : BCP 47 言語タグの文字列または Intl.Locale インスタンス、またはそのようなロケール識別子の配列です。undefined が渡された場合、または指定されたロケール識別子がどれも使用できない場合、ランタイムのデフォルトロケールが使用されています。 locales 引数の一般的な形と解釈については、Intl メインページにある引数の説明を参照してください。
  • options 省略可
    • : 以下のプロパティの一部または全部を持つオブジェクト(すべてが省略可能です)。
      localeMatcher

      使用するロケール照合アルゴリズム。使用可能な値は "lookup""best fit" です。デフォルト値は "best fit" です。このオプションの詳細については、ロケールの識別とネゴシエーションのページを参照してください。

      granularity

      入力をどの程度の粒度で分割すべきか。指定可能な値は次の通りです。

      "grapheme" (デフォルト)

      ロケールに基づいて、書記素クラスター(ユーザーが認識する文字)の境界で、入力を区間に分割します。

      "word"

      ロケールに基づいて、単語の区切りで入力を区間に分割します。

      "sentence"

      ロケールに基づいて、文の境界で入力を区間に分割します。

返値

新しい Intl.Segmenter のインスタンスです。

例外

RangeError

locales または options に不正な値が含まれていた場合に発生します。

基本的な使い方

次の例は、日本語を使って文字列中の単語を数えるものです(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 が記録されます。

仕様書

仕様書
ECMAScript® 2027 Internationalization API Specification
# sec-intl-segmenter-constructor

ブラウザーの互換性