2h
JavaScript で、文字列をUnicodeの合成とかを考慮して人間にとって自然な文字単位に分割するライブラリあったよね。なんてやつだっけ?
JavaScript で、文字列をUnicodeの合成とかを考慮して人間にとって自然な文字単位に分割するライブラリあったよね。なんてやつだっけ?
Sources
Answer
はい、JavaScriptで文字列をUnicodeの合成を考慮して自然な文字単位に分割するライブラリがいくつか存在します。最も一般的で効果的なのは以下の2つです:
これらのライブラリを使用することで、サロゲートペアや結合文字、絵文字などを含む複雑なUnicode文字列を、人間が認識する自然な文字単位で正確に分割することができます
1. Intl.Segmenter
Intl.Segmenterは、JavaScriptの組み込みAPIで、Unicode対応の文字列分割を提供します3
. このAPIは以下の特徴があります:
- ブラウザネイティブの実装で、高速かつ正確
- 絵文字や結合文字を正しく処理
- 言語に応じた単語分割も可能
javascriptconst segmenter = new Intl.Segmenter("ja", { granularity: "grapheme" }); console.log([...segmenter.segment("🇯🇵👨🏻💻")].length); // 2
2. graphemesplit
graphemesplitは、Node.jsで人気のあるサードパーティライブラリです1
. 特徴として:
- 複雑なUnicode文字も正確に分割
- Node.js環境で使用可能
javascriptconst split = require('graphemesplit'); split('Z͑ͫ̓ͪ̂ͫ̽͏̴̙̤̞͉͚̯̞̠͍A̴̵̜̰͔ͫ͗͢L̠ͨͧͩ͘G̴̻͈͍͔̹̑͗̎̅͛́Ǫ̵̹̻̝̳͂̌̌͘!͖̬̰̙̗̿̋ͥͥ̂ͣ̐́́͜͞');
1
3
.Related
GraphemeSplitとIntl.Segmenterの違いは何
Intl.Segmenterはどのブラウザで使えるの
GraphemeSplitはどのようにして文字列を分割するの
Unicodeの"1文字"の仕様が複雑な理由は何
他に使える文字列分割ライブラリはあるの