文字列の長さ(文字数)を取得

文字列の長さを取得するには、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);

JavaScript逆引きリファレンス一覧へ戻る