只能處理比較短的文字。可以先把字符串按每一行的長度截取下來,再到行首加一個空白字符,這樣就不會因為標點符號在前面而強制換行了,因為行首都有一個空白字符,而空白字符是可以當行首的。
下面貼一下我用的截取字符串的方法
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;
}
}
}
也就不依賴自動換行了,而是直接向測出一行要多長,直接自己先截取字符串,后面在每個直接截取字符串的前面加一個空格,空格是可以用於開頭的,這樣就不會因為標點不好不能出現在開頭而提前換行了
