如題,有這種需求,就記錄一下以便以后拿來用,具體用到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; }