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) + "
";
}
if(remainder > 0){
    newStr += str.slice(n*step) + "
"
}

当然也可以把接收器改成数组 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) + "
";
         }else{
            receiver.push(str.slice( i * step,( i + 1) * step));
        }
    }
    return receiver;
}
原文地址:https://www.cnblogs.com/dayin1/p/15019228.html