メモしよっと

なんでもメモするブログです。

Intl.Segmenterを使えば、サロゲートペア文字列も一文字でカウントしてもらえる - JavaScript

サロゲートペア文字列(例えば👨‍👩‍👧‍👧のような絵文字)を文字数カウントにすると、だいたい1文字以上の扱いになります。 (何文字になるかは、カウント方法で変わってくる)

そこで、簡単に1文字扱いで取得できる方法がないか調べました。 JavaScriptのIntlオブジェクトを使えば、1文字扱いで戻ってくる!! ちょっと感動した。

const segmenter = new Intl.Segmenter("ja", { granularity: "grapheme" });
const text = ""; // 文字数カウントしたい文章
console.log("textLenght: " + [...segmenter.segment(text)].length);

ただ、主要ブラウザのうちではFirefoxが非対応なので、素直には使えなさそうです。

Intl.Segmenter - JavaScript | MDN