直接代码
<body>
<script>
var lenFor = function(str){
var byteLen=0,len=str.length;
if(str){
for(var i=0; i<len; i++){
if(str.charCodeAt(i)>255){
byteLen += 2;
}else{
byteLen++;
}
}
return byteLen;
}else{
return 0;
}
}
// 正则表达式检测字符串的字节长度
var lenReg = function(str){
return str.replace(/[^x00-xFF]/g,'**').length;
};
//用正则表达式检测所用的时间竟然是for循环的两倍!!!!
//这个好使---
function getBytesLength(str) {
// 在GBK编码里,除了ASCII字符,其它都占两个字符宽
return str.replace(/[^\x00-\xff]/g, 'xx').length;
}
//alert(lenFor("a"));
//alert(lenFor("啊"));
//alert(lenFor("a啊"));
//alert(lenReg("a"));
//alert(lenReg("啊"));
//alert(lenReg("a啊"));
alert(getBytesLength("a"));
alert(getBytesLength("啊"));
alert(getBytesLength("a啊"));
</script>
</body>