JS获取字符串长度(英文占1个字符,中文汉字占2个字符)

时间:2024-04-15 18:34:39

方法一:

String.prototype.gblen = function() {
	var len = 0;
	for (var i = 0; i < this.length; i++) {
		if (this.charCodeAt(i) > 127 || this.charCodeAt(i) == 94) {
			len += 2;
		} else {
			len++;
		}
	}
	return len;
}

方法二:

function getStringLen(Str) {
	var i, len, code;
	if (Str == null || Str == "") return 0;
	len = Str.length;
	for (i = 0; i < Str.length; i++) {
		code = Str.charCodeAt(i);
		if (code > 255) {
			len += 1
		}
	}
	return len;
}

方法三:

function getStringLen(val) {
	var len = 0;
	for (var i = 0; i < val.length; i++) {
		var a = val.charAt(i);
		if (a.match(/[^\x00-\xff]/ig) != null) {
			len += 2;
		} else {
			len += 1;
		}
	}
	return len;
}

方法四:

function getStringLen(str) {
	var len = 0;
	for (var i = 0; i < str.length; i++) {
		str.charCodeAt(i) > 255 ? len += 2 : len += 1;
	}
	return len;
}

以上几种方法都大同小异;来一个不一样的:

方法五:

function getBLen(str) {
	// 把双字节的替换成两个单字节的然后再获得长度
	if (str == null) return 0;
	if (typeof str != "string") {
		str += "";
	}
	return str.replace(/[^\x00-\xff]/g, "01").length;
}

注:[^\x00-\xff]即ASCII 编码,表示不在0-255的字符。而charCodeAt() 方法返回指定位置的字符的 Unicode 编码。汉字的编码范围是不在0-255内的。