<html>
  <body>
    <script>
     function subStringByByte(str,start,len){
       end=start+len
     ret="";
     strArray = str.split("");
     i=start;
     for(;i<end&&i<strArray.length;i++){
      ret+=strArray[i];
     }
     alert(ret);
}    </script>
    取1-4个字符,包括第1个不包括第4个!字符串从0开始记数
    <br>以下是不够长度测试 1-4
    <input type=button onclick="subStringByByte('看ab看',1,4)" value="看ab看">
    <input type=button onclick="subStringByByte('a看b看',1,4)" value="a看b看">
    <input type=button onclick="subStringByByte('aaa看',1,4)" value="aaa看">
    <input type=button onclick="subStringByByte('看aaa',1,4)" value="看aaa">
    <br>以下是够长度测试 1-4
    <input type=button onclick="subStringByByte('看ab看看ab看',1,4)" value="看ab看看ab看">
    <input type=button onclick="subStringByByte('a看b看ab看',1,4)" value="a看b看ab看">
    <input type=button onclick="subStringByByte('aa看ab看',1,4)" value="aa看ab看">
    <input type=button onclick="subStringByByte('看a看ab看a',1,4)" value="看a看ab看a">
    <br>
    <font color=red>临时写的方法,未经过更为复杂的测试,如果有问题请告之</font>
  </body>
</html>

解决方案 »

  1.   

    这是小弟写的.但是速度慢了.所以请教个位大侠相助.<html>
    <body>
    <script language = "javascript">
    function getValue()
    {
    alert(document.form1.text1.value.substring(0,4));
    alert(subStringByte(document.form1.text1.value,0,4));
    }
    function subStringByte(str,begin,len)
    {
        var charCount = 0;
        var count = 0;
        var i = 0;
        var end = begin + len;
        if(begin == null || begin < 0 || end < 0 || end == null)
        {
    return null;
        }
        if(str == null || str.length == 0)
        {
    return null;
        }
        for(i = begin; i < end; i++)
       {
    if(str.charCodeAt(i) > 128)
    {
        if(count + 2 <= len)
       {
           count = count + 2;
           charCount = charCount + 1;
        }
       else
       {
            break;
       }
    }
    else
    {
        if(count + 1 <= len)
        {
    count = count + 1;
    charCount = charCount + 1;
        }
       else
        {
    break;
        }
    }
         }
    return str.substring(begin,charCount);
    }
    </script>
    <form name = "form1">
    <input type = "text" name = "text1" value = "一a一b" />
    <input type = "button" name = "button1" value = "button" onClick = "getValue()"/>
    </form>
    </body>
    </html>
      

  2.   

    <html>
    <body>
    <script language = "javascript">
    function getValue()
    {
    alert(document.form1.text1.value.substring(0,4));
    alert(subStringByte(document.form1.text1.value,0,4));
    }
    function subStringByte(str,begin,len)
    {
        var charCount = 0;
        var count = 0;
        var i = 0;
        var end = begin + len;
        if(begin == null || begin < 0 || end < 0 || end == null)
        {
    return null;
        }
        if(str == null || str.length == 0)
        {
    return null;
        }
        for(i = begin; i < end; i++)
       {
    if(str.charCodeAt(i) > 128)
    {
        if(count + 2 <= len)
       {
           count = count + 2;
           charCount = charCount + 1;
        }
       else
       {
            break;
       }
    }
    else
    {
        if(count + 1 <= len)
        {
    count = count + 1;
    charCount = charCount + 1;
        }
       else
        {
    break;
        }
    }
         }
    return str.substring(begin,charCount);
    }
    </script>
    <form name = "form1">
    <input type = "text" name = "text1" value = "一a一b" />
    <input type = "button" name = "button1" value = "button" onClick = "getValue()"/>
    </form>
    </body>
    </html>
      

  3.   

    不好意思!帖成你的了!
    --------------------------
    <html>
      <body>
        <script>
         function chinese(s){//判断汉字
          if(/[^\x00-\xff]/g.test(s))
          return true;//是汉字
    else
    return false;
         }
         function subStringByByte(str,start,len){
           end=start+len
         ret="";
         strArray = str.split("");
         i=start;
         p=0;
         for(;i<end&&i<strArray.length&&p<end;i++){
          s=strArray[i];
          if(chinese(s)){//如果是汉字
          if(p!=end-1){
          ret+=s;
          p++;
          }
          }else{
          ret+=s;
          }
          p++; 
         }
         alert(ret);
    }    </script>
        取1-4个字符,包括第0个不包括第4个!字符串从0开始记数<br>
        <input id=textvalue type=text onclick="subStringByByte('看ab看',0,4)" value="看ab看">
        <input type=button onclick="subStringByByte(textvalue.value,0,4)" value="a看b看">
        <br><font color=red>临时写的方法,未经过更为复杂的测试,如果有问题请告之 LCKKING()</font>
      </body>
    </html>
      

  4.   

    str = "我ab我";
    str.substring(0,3);
      

  5.   

    <script>
      function subStringByByte(str,len){
        var ret="", count=0,c,num;
        for(var i=0;i<str.length;i++){
         var nc=str.charCodeAt(i);
     num=(nc>255)?2:1;
     if(count+num<=len)  {
       ret+=str.charAt(i);
       count+=num;
     }else
       return ret;
    }

      }
      alert(subStringByByte("a我闷ab",4))
    </script>
      

  6.   

    问题已得解,采用折半法.可以提高效率.
    <html>
    <body>
    cript language = "javascript">
    function strLength(str)
    {
    var re,resultStr;
    re=new RegExp("[^\x00-\xff]","g");
    resultStr=str.replace(re,"aa");
    return resultStr.length;
    }
    function getValue()
    {
    // alert(document.form1.text1.value.substring(0,4));
    alert(subStringByte(document.form1.text1.value,0,3));
    alert(subStringByte(document.form1.text1.value,0,4));
    }
    function subStringByte(str,begin,len)
    {
    var flag=0;
    var begintemp=0;
    var endtemp=0;
    var returnstr="";
    var lentemp;
    var strtemp;
    var flagtemp;
    var end = begin + len;
    if(begin == null || begin < 0 || end < 0 || end == null || len==0)
    {
    return null;
    }
    if(str == null || str.length == 0)
    {
    return null;
    }
    if(strLength(str)<len)
    {
    return null;
    }
    flag=len;
    begintemp=begin;
    while(flag>1)
    {
    if((flag%2)==1)
    {flagtemp=flag-1;}
    else
    {flagtemp=flag;}
    lentemp=flagtemp/2;
    endtemp=begintemp+lentemp;
    strtemp=str.substring(begintemp,endtemp);
    begintemp=begintemp+lentemp;
    returnstr=returnstr+strtemp;
    flag=len-strLength(returnstr);
    }
    if(flag==1)
    {
    if((flag%2)==1){flag=flag+1;}
    lentemp=flag/2;
    endtemp=begintemp+lentemp;
    strtemp=str.substring(begintemp,endtemp);
    if(strLength(strtemp)==1){returnstr=returnstr+strtemp;}
    } return returnstr;
    }
    </script>
    <form name = "form1" method="post" >
    <input type = "text" name = "text1" value = "一a一a" />
    <input type = "button" name = "button1" value = "button" onClick = "getValue()"/>
    </form>
    </body>
    </html>