2h

JavaScript で、文字列をUnicodeの合成とかを考慮して人間にとって自然な文字単位に分割するライブラリあったよね。なんてやつだっけ?

Answer
はい、JavaScriptで文字列をUnicodeの合成を考慮して自然な文字単位に分割するライブラリがいくつか存在します。最も一般的で効果的なのは以下の2つです:

1. Intl.Segmenter

Intl.Segmenterは、JavaScriptの組み込みAPIで、Unicode対応の文字列分割を提供します
3
.
このAPIは以下の特徴があります:
  • ブラウザネイティブの実装で、高速かつ正確
  • 絵文字や結合文字を正しく処理
  • 言語に応じた単語分割も可能
使用例:
javascript
const segmenter = new Intl.Segmenter("ja", { granularity: "grapheme" }); console.log([...segmenter.segment("🇯🇵👨🏻💻")].length); // 2

2. graphemesplit

graphemesplitは、Node.jsで人気のあるサードパーティライブラリです
1
.
特徴として:
  • 複雑なUnicode文字も正確に分割
  • Node.js環境で使用可能
使用例:
javascript
const split = require('graphemesplit'); split('Z͑ͫ̓ͪ̂ͫ̽͏̴̙̤̞͉͚̯̞̠͍A̴̵̜̰͔ͫ͗͢L̠ͨͧͩ͘G̴̻͈͍͔̹̑͗̎̅͛́Ǫ̵̹̻̝̳͂̌̌͘!͖̬̰̙̗̿̋ͥͥ̂ͣ̐́́͜͞');
これらのライブラリを使用することで、サロゲートペアや結合文字、絵文字などを含む複雑なUnicode文字列を、人間が認識する自然な文字単位で正確に分割することができます
1
3
.
Related
GraphemeSplitとIntl.Segmenterの違いは何
Intl.Segmenterはどのブラウザで使えるの
GraphemeSplitはどのようにして文字列を分割するの
Unicodeの"1文字"の仕様が複雑な理由は何
他に使える文字列分割ライブラリはあるの