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;
    }
  • 相关阅读:
    NOI2018:屠龙勇士
    Hello world!
    bzoj5月月赛订正
    codeforces906 D
    bzoj2728 [HNOI2012]与非
    bzoj3884上帝与集合的正确用法
    bzoj2817[ZJOI2012]波浪
    2017多校联合赛1[题解]
    论如何优雅的用bitset来求四维偏序
    bzoj1488[HNOI2009]图的同构
  • 原文地址:https://www.cnblogs.com/dayin1/p/15019228.html
Copyright © 2011-2022 走看看