注释和代码一一对应,请阅读注释。
/*
涉及到的方法:
charCodeAt() 返回在指定的位置的字符的 Unicode 编码。返回值是 0 - 65535 之间的整数。
charAt() 返回在指定位置的字符。
escape() 函数可对字符串进行编码
*/
// js获取字符串长度
// 问题点:中英文不区分字节,结果是字符长度
let str="a长度";
console.log(str.length); // 3
// 如果要统计字符串的字节长度,
// 可以先检测字符是单字节还是双字节,再计算长度
// 方法1-根据字符编码-检测字符是否为双字节或单字节
let len=0;
for(let i=0;i<str.length;i++){
str.charCodeAt(i)<256?(len+=1):(len+=2);
}
console.log(len); // 5
// 如果要统计字符串的字节长度,
// 可以先计算字符是单字节还是双字节,再计算长度
// 方法2-用charAt和escape-检测字符是否为双字节或单字节
len=0;
for(let i=0;i<str.length;i++){
if (escape(str.charAt(i)).length > 4) {
len += 2;
} else if (str.charAt(i) != "\r") {
len ++;
}
}
console.log(len); // 5
// 如果要统计字符串的字节长度,
// 可以先计算字符是单字节还是双字节,再计算长度
// 方法3-用正则表达式-检测字符是否为双字节或单字节
len=0;
for(let i=0;i<str.length;i++){
if (/^[\u0000-\u00ff]$/.test(str.charAt(i))) {
len ++;
} else {
len += 2;
}
}
console.log(len); // 5
版权声明:本文为xijinno1原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。