js获取一个字符串的字节长度
因为中文字占两个字节,英文占一个字节。
方法1:把中文字替换成两个字母。然后计算长度。
方法2:直接判断中文,长度+2。
运用的方法大同小异。都是通过正则表达式,写unicode编码。
方法1:
var str = '2333哈哈';
var length=0;
str = str.replace(/[\u4e00-\u9fa5]/g,"aa");
alert(str);
alert(str.length);
方法1中
[\u4e00-\u9fa5]:匹配中文字符
[^\x0000-\x00ff]:匹配双字节字符(包括中文字)
正则表达示 /[\u4e00-\u9fa5]/g
的 g
必须要,global,全部都要检查的意思。没有的话输出的是(2333aa哈)
方法2:
function getLength(str){
var length=0;
var reg = /[\u4e00-\u9fa5]/;
for(var i=0;i<str.length;i++){
if(reg.test(str.charAt(i))){
length+=2;
}else{
length++;
}
}
return length;
}
var str = '2333哈哈哈';
console.log(getLength(str));
方法2中的函数
str.charAt(i) : 获取i位置的字符
扩展:
charCodeAt(i) : 获取字符串的num位置的字符的unicode编码
fromCharCode(i) : 获取unicode编码对应的字符