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>

 

posted @ 2013-04-21 01:34  horizon~~~  阅读(1563)  评论(0编辑  收藏  举报