文字列の長さ(文字数)を取得
文字列の長さを取得するには、string.length
プロパティを使用します。
全角半角区別なく一つの文字を1としてカウントしていきます。
なお、数値はlengthプロパティが存在せずundefinedが返ってきます。
ただし、stringに変換することで取得することができます。
構文
JavaScript
var stringCount = string.length;
戻り値
長さ(文字数)を返します。
サンプルコード
JavaScript
var str = '123abcあいう';
alert(str.length);
全角半角を区別して長さ(文字数)を取得する場合
全角半角を区別して長さ(文字数)を取得する場合は、次のように半角を識別し、それを1としてカウント、それ以外は2としてカウントしていくようなもので対応します。
関数定義
JavaScript
/**
* 全角半角を区別して長さ(文字数)を取得
* @param {string} str 長さを取得する文字列
* @param {'UTF-8'|'Shift_JIS'} [encode='Shift_JIS'] 文字コード
* @return {number} 文字数を返す
*/
var strLength = function(str, encode) {
var count = 0,
setEncode = 'Shift_JIS',
c = '';
if (encode && encode !== '') {
if (encode.match(/^(SJIS|Shift[_\-]JIS)$/i)) {
setEncode = 'Shift_JIS';
} else if (encode.match(/^(UTF-?8)$/i)) {
setEncode = 'UTF-8';
}
}
for (var i = 0, len = str.length; i < len; i++) {
c = str.charCodeAt(i);
if (setEncode === 'UTF-8') {
if ((c >= 0x0 && c < 0x81) || (c == 0xf8f0) || (c >= 0xff61 && c < 0xffa0) || (c >= 0xf8f1 && c < 0xf8f4)) {
count += 1;
} else {
count += 2;
}
} else if (setEncode === 'Shift_JIS') {
if ((c >= 0x0 && c < 0x81) || (c == 0xa0) || (c >= 0xa1 && c < 0xdf) || (c >= 0xfd && c < 0xff)) {
count += 1;
} else {
count += 2;
}
}
}
return count;
};
使い方
引数名 | 型 | 初期値 | 説明 | |
---|---|---|---|---|
第一引数 必須 |
str | string | 長さを取得する文字列 | |
第二引数 | encode | string | 'Shift_JIS' | 文字コード 次の値が指定可能 'Shift_JIS' 'UTF-8' |
戻り値
成功した場合は最初に見つかった位置のインデックス番号、見つからなかった場合は-1を返します。
JavaScript
var str = '123abcあいう',
stringCount = strLength(str);
alert(stringCount);