js 將一段文字按照固定的字數分割成多行
阿新 • • 發佈:2021-07-16
如題,有這種需求,就記錄一下以便以後拿來用,具體用到string的slice函式,缺點是沒有根據中英文去做分割,比如:《要抽取的片斷的起始下標。如果是負數,則該引數規定的是從字串的尾部開始算起的位置。也就是說,-1 指字串的最後一個字元,-2 指倒數第二個字元,以此類推。》這段話漢字佔兩個空格,但是數字只佔一個空格,中文標點佔兩個,但英文標點只佔一個,分割完之後可能會有長短不齊的現象。廢話不多說,直接上程式碼吧
var str = "要抽取的片斷的起始下標。如果是負數,則該引數規定的是從字串的尾部開始算起的位置。也就是說,-1 指字串的最後一個字元,-2 指倒數第二個字元,以此類推。"; varstep = 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; }