【JavaScript】特殊文字の文字列の長さを取得するためのソースコード

この記事は約2分で読めます。

JavaScriptで文字列の長さを取得するためのソースコードについて解説します。

スポンサーリンク

【JavaScript】特殊文字の文字列の長さを取得するためのソースコード

let test1= '叱る言葉';
let test2 = 'だめだぞ';
console.log(test1.length); //結果:5
console.log(test2.length); //結果:4

文字列の長さを取得するにはlengthを用いてプログラミングしますが、上記ソースコードの場合、test1の全体の文字数は4文字のはずが5文字になってしまいます。

実は「叱」という文字が悪さをしているからこのような反映結果になってしまうのですが、このような特殊な文字のことをサロゲートペアといいます。

Unicodeではほとんどの文字を1文字あたり2byteでカウントしますが、サロゲートペアの特殊文字の場合、1文字あたり4byteでカウントしてしまいます。

そのため、(全体の文字数)+1文字追加されてしまうことになるのです。

サロゲートペアを無視してカウントするためには、下記ソースコードのように修正しましょう。

let str = '叱る言葉';
let len = str.length;
let snum str.split(¥[¥uD800-¥uDBFF][¥uDC00-¥uDFFF]/g).length - 1;
console.log(len - snum); // 結果:4
執筆者
自己紹介
FirstPC

株式会社FirstPCのサイト管理運営者。
東京のIT自社開発系ベンチャー企業に勤めた後、Webデザイン系のフリーランスエンジニアとして様々な案件(HTML, CSS, JavaScript, Java, PHP, Swift)を重ねて独立し、会社設立。Webサイトのデザイン、コーディングのほか、ロゴ・バナー作成や副業用リライト記事の販売、動画作成をしている。

FirstPCをフォローする
プログラミング
スポンサーリンク
FirstPCをフォローする
FirstPC パソコンなんでも塾
タイトルとURLをコピーしました