JavaScriptにおいて、文字列の長さを正確に計算することは、さまざまなアプリケーションで重要な役割を果たします。
特に、日本語などの全角文字と半角文字が混在する場合、これらを適切にカウントする必要があります。
この記事では、JavaScriptで全角文字を2文字、半角文字を1文字としてカウントする方法を紹介します。
全角文字を2文字、半角文字を1文字としてカウントする関数の実装
function countCharacters(str) {
let count = 0;
for (let i = 0; i < str.length; i++) {
const codePoint = str.codePointAt(i);
if (codePoint >= 0x10000 && codePoint <= 0x10FFFF) {
count += 2; // 全角文字
} else {
count += 1; // 半角文字
}
}
return count;
}
const text = "あいうえおABCDE";
console.log(countCharacters(text)); // 出力: 12
この関数は、文字列を一文字ずつ走査し、Unicodeコードポイントを取得して、その値に基づいて全角文字と半角文字を区別し、カウントします。最終的に、全角文字を2文字、半角文字を1文字として合計の文字数を返します。
よくある質問(FAQ)
Q. JavaScriptで全角・半角の文字数を区別してカウントするには?
A. 全角文字を正規表現/[^\x00-\xff]/で検出し、全角は2、半角は1としてカウントします。Intl.SegmenterやencodeURIComponent()のバイト数を利用する方法もあります。
Q. 文字列が全角か半角か判定するには?
A. charCodeAt()で文字コードが0xFF60以上(全角の範囲)かどうかで大まかに判定できます。より正確にはUnicode範囲を確認するか、正規表現でマッチします。
Q. 全角英数を半角に変換するには?
A. String.prototype.replace()と正規表現を使い、全角ASCII範囲(U+FF01〜U+FF5E)を対応する半角文字(U+0021〜U+007E)に変換します。charCodeAt()で取得したコードから0xFEE0を引くと半角コードになります。
まとめ
JavaScriptで全角文字を2文字、半角文字を1文字としてカウントする方法を学びました。この方法を使用することで、文字列の長さを正確に計算し、文字列操作をより効果的に行うことができます。
