🌊
【JS】拡張書記素クラスターを含む文字列から1文字ずつ取り出す
JavaScript で拡張書記素クラスターを扱う場合、Intl.Segmenter を使います。利用できるかは次のコードを入力して確認できます。
> Intl.Segmenter
[Function: Segmenter]
文字列を配列に変換してみましょう。
> segmenter = new Intl.Segmenter("ja", {granularity: "grapheme"})
Segmenter [Intl.Segmenter] {}
> str = "あいうえお"
'あいうえお'
> segment = segmenter.segment(str)
{}
for (s of segment) console.log(s.segment)
あ
い
う
え
お
undefined
Array.from
で配列に変換することもできます。
> Array.from(segment, v => v.segment)
[ 'あ', 'い', 'う', 'え', 'お' ]
length
プロパティを足せば文字数の長さを計算できます。
> Array.from(segment, v => v.segment).length
5
Discussion