ロケールに依存するテキスト セグメンテーションに Intl.Segmenter
を使用して、文字列を単語、文、書記素に分割できるようになりました。
中国語や日本語など、ラテン文字以外の多くの言語では、単語の区切りにスペースを使用しません。したがって、空白文字に対して JavaScript の split()
メソッドを使用してテキストを単語に分割すると、誤った結果が返されます。
Intl.segmenter()
コンストラクタを使用して新しい Intl.Segmenter
オブジェクトを作成する場合は、locale
と、"grapheme"
、"word"
、または "sentence"
の値にできる granularity
などのオプションを渡します。次の例では、単語を分割して日本語用の新しい Intl.Segmenter
オブジェクトを作成します。
const segmenter = new Intl.Segmenter('ja-JP', { granularity: 'word' });
テキスト文字列を指定して Intl.Segmenter
オブジェクトの segment()
メソッドを呼び出すと、イテラブルが返されます。
const segments = segmenter.segment(str);
console.table(Array.from(segments));
この機能の使用方法に関する優れたチュートリアルについては、Polypane ブログの Using the Intl.Segmenter API をご覧ください。
JavaScript での Intl.Segmenter による国際テキスト セグメンテーションに、絵文字で Intl.Segmenter
を使用する方法など、その他の例があります。