zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    valgrind的使用
    php开启gzip压缩
    scrapy
    今天几个bug的排查过程
    awk使用多个分割符
    有用的url
    图片延迟加载
    用中间表提高互联网程序的开发效率
    百度技术沙龙
    vs2005/.NET2.0 控件演示之 文件上传 《FileUpload》
  • 原文地址:https://www.cnblogs.com/dayin1/p/15019228.html
Copyright © 2011-2022 走看看