<p><textarea rows="11" name="S1" cols="51"></textarea></p>
<p><input type="button" value="按钮" onclick=ttt()></p>
<script>
function ttt(){
txt=brkLine(S1.value,20)

pr.innerHTML=txt;
}
function brkLine(txt,charlen){

s=""
l=0;
p=0;
for (i=0;i<txt.length;i++){
a=txt.charAt(i);
s+=a;
if (p!=0){
if (a==">") p=0; 
}
else
{   if (a!="<"){  
   
if (!/^[\x00-\xff]/.test(a)) l++;
l++;

if (l>=charlen){
  s+="<br>";
  l=0;
}
}
else 
if (txt.substr(i,4).toLowerCase()=="<br>"){
s+="br>";
i+=4;
l=0;
}else  p=1;

}
}
return s;
}
</script>
<table border="1" width="30%" height="107">
  <tr>
    <td width="100%" height="101" valign="top" id=pr>每行20个字符</td>
  </tr>
</table>
 

解决方案 »

  1.   

    得到固定字符位置的函数   
    <Script language="Javascript" Runat="Server">
    /*
    =======================================================================================
    本程序段的功能:给定一个字符串,不管是英文还是中文,还是中英文混合的,只取前面的8个英文字母占位的宽度。
    关于该程序的说明:当最后一个字为中文,并且前面已经取得7位时,就不应该再取这个字了。再
    最后位置补空格; 否则的话,总共就会占9个英文字符的位置了。
    本程序由net_lover(孟子E章)编写,您可以任意使用本程序,但要保持本注释。
    有任何疑问请Email至: [email protected]
    欢迎访问:
    http://lucky.myrice.com
    http://colorweb.go.163.com
    =======================================================================================
    */
    function get8Length(str)

    var tmp = 0;
    var len = 0;
    var okLen = 0
    for(var i=0;i<8;i++)
    {
    if(str.charCodeAt(i)>255)
    tmp += 2 
    else
    len += 1
    okLen += 1
    if(tmp + len == 8) 
    {
    return (str.substring(0,okLen));
    break;
    }
    if(tmp + len > 8)
    {
    return (str.substring(0,okLen - 1) + "&nbsp;"); 
    break;
    }
    }

    </Script>
    <%
    Dim strTest
    strTest = "我是孟子E章啊!!"
    Response.write get8Length(strTest) & "……<br>"
    strTest = "我是net_lover!!"
    Response.write get8Length(strTest) & "……<br>"
    strTest = "I我a是m孟子E章啊!!"
    Response.write get8Length(strTest) & "……<br>"
    %>
     
      

  2.   

    <script>
    s="谦ss逊在要sfkjsjf"
    alert(cutstr(s,7));
    function cutstr(string,len){
    var i,k;
    k=0;
    i=0;
    while ( i<len && i< string.replace(/[^\x00-\xff]/g,"xx").length){
       if(string.charCodeAt(k)>255) i++;
       i++;
       k++;
    }
    return string.substr(0,k);

    </script>
      

  3.   

    结帖了,决定采用net_lover(孟子E章)的方法 ,不过对另外两位的帮助也表示感谢。为了感谢大家,在分不是很多的情况下,每人都给予奖励,希望今后得到一如既往的支持。
      

  4.   

    <script>
    alert(getLen("秋12水无3恨4",5))
    function getLen(str,len){
    var k=1;
    for(i=0;i<str.length;i++,k++){if(str.charCodeAt(i)>255)k++;if(k>len)break};
    return str.substr(0,i);
    }
    </script>