js 將一段文字按照固定的字數分割成多行


如題,有這種需求,就記錄一下以便以后拿來用,具體用到string的slice函數,缺點是沒有根據中英文去做分割,比如:《要抽取的片斷的起始下標。如果是負數,則該參數規定的是從字符串的尾部開始算起的位置。也就是說,-1 指字符串的最后一個字符,-2 指倒數第二個字符,以此類推。》這段話漢字占兩個空格,但是數字只占一個空格,中文標點占兩個,但英文標點只占一個,分割完之后可能會有長短不齊的現象。廢話不多說,直接上代碼吧

var str = "要抽取的片斷的起始下標。如果是負數,則該參數規定的是從字符串的尾部開始算起的位置。也就是說,-1 指字符串的最后一個字符,-2 指倒數第二個字符,以此類推。";
var step = 10; // 10個字符一行
var remainder = str.length % step; //對字符串的長度取行的余數
var n = (str.length - remainder) / step; //截完一共多少行(如果余數大於1,則共有n+1行
var newStr = ""
for(var i = 0; i < n; i++){
    newStr += str.slice(i*step,(i+1)*step) + "\n";
}
if(remainder > 0){
    newStr += str.slice(n*step) + "\n"
}

當然也可以把接收器改成數組 newArr = [] 

然后遍歷時往數組中push就好了,另外也可以封裝成一個函數,將字符串,長度,接收變量傳到函數中

function breakStr(str,step,receiver){
    //str 需要截取的字符串
    //step 步長
    //receiver 接收器,可以是字符串,也可以是數組
    var remainder = str.length % step;
    var n = (str.length - remainder) / step;
    var type = typeof receiver.toLowerCase();
    for(var i = 0;i < n;i++){
        if(type == 'string'){
            receiver += str.slice( i * step,( i + 1) * step) + "\n";
         }else{
            receiver.push(str.slice( i * step,( i + 1) * step));
        }
    }
    return receiver;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM