lengthで文字列の長さを正しく取得できないケースがある

一般的にJavaScript文字列のlength属性で文字列の長さを取得できますが、日本語第3水準字、第4水準字、絵文字などのUnicodeで表現する文字が正しく取得できない場合があります。

  • 絵文字の例:🙏
const str = '\u{1F64F}';
console.log(str + 'の長さ:' + str.length);

実行結果:

🙏の長さ:2

ES6の配列展開で正確な文字列の長さを取得する

配列展開(Array Spread)で文字列を文字配列に変換するときに、文字列に含まれる個々のunicode文字が正しく分けられます。

const str = '\u{1F64F}';
console.log(str + 'の長さ:' + [...str].length);

実行結果:

🙏の長さ:1

参考記事

JavaScriptでのサロゲートペア文字列のメモ

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.