直接代碼
<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>