截取含有中英文的字符串,按字节进行截取,一个英文算一个字节,一个汉字算两个字节,当出现汉字时不能截取半个汉字要把汉字补全。求代码。
例如:截取四个字符
 abcdefg   结果就是:abcd
 爱爱啊啊  结果就是:爱爱
 a啊啊你你 结果就是:a啊啊求代码,求高手啊啊  

解决方案 »

  1.   

    <html>
    <body>
    <script>
    function cutstr(str,len)
     {
     var str_length = 0;
     var str_len = 0;
     str_cut = new String();
     str_len = str.length;
     for(var i = 0;i<str_len;i++)
     {
     a = str.charAt(i);
     str_length++;
     if(escape(a).length > 4)
     {
     //中文字符的长度经编码之后大于4
     str_length++;
     }
     str_cut = str_cut.concat(a);
     if(str_length>=len)
     {
     str_cut = str_cut.concat("...");
     return str_cut;
     }
     }
     //如果给定字符串小于指定长度,则返回源字符串;
    if(str_length<len){
     return str;
     }
     }
     alert(cutstr("wabdts中国人一人都没有",10));
     </script>
    </body>
    </html>
      

  2.   

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    <script type="text/javascript">
    String.prototype.substringbybite=function(n){
    var a="";
    var num=0;
    var x='爱';
    var reg=/[\u4e00-\u9fa5]/;
    for(var i=0;i<this.length;i++){
    var b=this.charAt(i);
    if(!reg.test(b)){
    num+=1;
    if(num<=n){
    a+=b;
    }
    }else if(reg.test(b)){
    num+=2;
    if(num<=n+1){
    a+=b;
    }
    }
    }
    return a;
    }
    var x=["abcdefg","爱爱啊啊","a啊啊你你"];
    for(var i in x){
    document.write(x[i].substringbybite(4)+"<br/>");
    }
    </script>
    </head><body>
    </body>
    </html>这样试试
      

  3.   

    String.prototype.subByte = function (start, bytes)
    {
    for (var i=start; bytes>0; i++)
    {
    var code = this.charCodeAt(i);
    bytes -= code<256 ? 1 : 2;
    }
    return this.slice(start,i)
    }alert('abcdefg'.subByte(0,4))
    alert('爱爱啊啊'.subByte(0,4))
    alert('a爱爱啊啊'.subByte(0,4))