🌊

【JS】拡張書記素クラスターを含む文字列から1文字ずつ取り出す

2023/07/07に公開

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