1. 程式人生 > 其它 >js 將一段文字按照固定的字數分割成多行

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; }