解决页面换行因标点符号不能出现在每一行的开头,导致提前换行,中间出现空隙的问题

只能处理比较短的文字。可以先把字符串按每一行的长度截取下来,再到行首加一个空白字符,这样就不会因为标点符号在前面而强制换行了,因为行首都有一个空白字符,而空白字符是可以当行首的。

下面贴一下我用的截取字符串的方法

function cutStr(str,L){
     var result = '',
         strlen = str.length, // 字符串长度
         chrlen = str.replace(/[^\x00-\xff]/g,'**').length; // 字节长度

     if(chrlen<=L){return str;}

     for(var i=0,j=0;i<strlen;i++){
         var chr = str.charAt(i);
         if(/[\x00-\xff]/.test(chr)){
             j++; // ascii码为0-255,一个字符就是一个字节的长度
         }else{
             j+=2; // ascii码为0-255以外,一个字符就是两个字节的长度
         }
         if(j<=L){ // 当加上当前字符以后,如果总字节长度小于等于L,则将当前字符真实的+在result后
             result += chr;
         }else{ // 反之则说明result已经是不拆分字符的情况下最接近L的值了,直接返回
             return result;
         }
     }
 }

 也就不依赖自动换行了,而是直接向测出一行要多长,直接自己先截取字符串,后面在每个直接截取字符串的前面加一个空格,空格是可以用于开头的,这样就不会因为标点不好不能出现在开头而提前换行了

posted @ 2019-10-18 10:45  飞刀寻欢  阅读(2260)  评论(0编辑  收藏  举报
……