正文
JS获取字符串长度(英文占1个字符,中文汉字占2个字符)
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
方法一:
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内的。