如题,有这种需求,就记录一下以便以后拿来用,具体用到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; }
原文:https://www.cnblogs.com/dayin1/p/15019228.html