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)
引数
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> |