在 JS中,使用字符串的 length 属性可以读取字符串的长度。长度以字符为单位,该属性为只读属性。
let str="string长度"
console.log(str.length) //8
JS支持的字符包括单字节、双字节两种类型,比如一个汉字是两个字节,此时想获取字符长度,可采取以下方法:
1.String 扩展原型方法 getByteLen()
该方法将枚举每个字符,并根据字符编码,判断当前字符是单字节还是双字节,然后统计字符串的字节长度。
String.prototype.getByteLen=function(){
let len=0;
for(let i=0;i<this.length;i++){
this.charCodeAt(i)<256?(len+=1):(len+=2)
}
return len
}
//使用
let str="string长度"
console.log(str.getByteLen()) //10
2.检测字符是否为双字节或单字节
(1)用charAt和escape
let c = this.charAt(i);
if (escape (c).length > 4) {
len += 2;
} else if (c != "\r") {len ++; }
(2)用正则表达式
let c = this.charAt(i);
if (/^[\u0000-\u00ff]$/.test(c)) {
len ++;
} else {len += 2; }
涉及到的方法:
charCodeAt() 返回在指定的位置的字符的 Unicode 编码。返回值是 0 - 65535 之间的整数。
charAt() 返回在指定位置的字符。
escape() 函数可对字符串进行编码