js判断字符串长度,中文占两个字符
分析前言:
// \x00-\xff 是字符编码的范围,如果查过这个范围,就不是字母和数字了, //把全部符合\x00-\xff条件的字符用**替换,然后计算长度,即遇到一个中文就用**替换,计算为两位 var length = name.replace(/[^\x00-\xff]/g,"**").length;
方案1:
用js判断字符串的长度: 如:str=”中国”,alert(str.length),则提示长度为2。 做如下处理后: str=str.replace(/[^\x00-\xff]/g, 'xx'),alert(str.length)则长度提示为4
方案2:
function strlen(str){ var len = 0; for (var i=0; i<str.length; i++) { var c = str.charCodeAt(i); //单字节加1 if ((c >= 0x0001 && c <= 0x007e) || (0xff60<=c && c<=0xff9f)) { len++; } else { len+=2; } } return len; }
sample:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JS-TRING</title>
<script type="text/javascript" >
//方案1
function wayOne(){
var str = document.getElementById('tt').value;
str=str.replace(/[^\x00-\xff]/g, 'xx');
alert(str.length);
}
//方案2-01
function wayTwo(){
var str = document.getElementById('tt').value;
alert(WidthCheck(str, 6));
}
//方案2-02
function WidthCheck(s, n){
var w = 0;
for (var i=0; i<s.length; i++) {
var c = s.charCodeAt(i);
//单字节加1
if ((c >= 0x0001 && c <= 0x007e) || (0xff60<=c && c<=0xff9f)) {
w++;
} else {
w+=2;
}
}
if (w == n) {
return true;
}
return false;
}
</script>
</head>
<body>
<div style="margin:10px 0;">
<form>
<input type="text" id="tt" />
<input type="button" value="wayOne" onclick="wayOne();" />
<input type="button" value="wayTwo" onclick="wayTwo();" />
</form>
</div>
</body>
</html>

浙公网安备 33010602011771号