JS:将长字符串拆分为具有字符限制的字符串,同时避免拆分单词

aly*_*lyx 15 javascript regex sms

我正在尝试将大块文本分成多个字符串,每个字符串为148个字符,同时避免切断单词.

我现在有这个,这是分裂的话:

var length = shortData.new.length;

if (length < 160){

  outputString[0] = shortData.new;
  document.write(outputString[0]);

}


if (length > 160 && length < 308){

  outputString[0] = shortData.new.substring(0,148);
  outputString[1] = shortData.new.substring(148,length);    

  document.write(outputString[0]+"(txt4more..)");   
  document.write(outputString[1]);      

}


if (length > 308 && length < 468){


  outputString[0] = shortData.new.substring(0,148);
  outputString[1] = shortData.new.substring(148,308);   
  outputString[2] = shortData.new.substring(308,length);    

  document.write(outputString[0]+"(txt4more..)");   
  document.write(outputString[1]+"(txt4more..)");   
  document.write(outputString[2]);      

}


if (length > 468 && length < 641){


  outputString[0] = shortData.new.substring(0,148);
  outputString[1] = shortData.new.substring(148,308);   
  outputString[2] = shortData.new.substring(308,468);   
  outputString[3] = shortData.new.substring(468,length);    

  document.write(outputString[0]+"(txt4more..)");   
  document.write(outputString[1]+"(txt4more..)");   
  document.write(outputString[2]+"(txt4more..)");   
  document.write(outputString[3]);      

}
Run Code Online (Sandbox Code Playgroud)

Pau*_*aul 27

您可以使用此函数,只需传入您的字符串和长度,它将返回数组,如:

var outputString = splitter(shortData['new'], 148);
Run Code Online (Sandbox Code Playgroud)

功能:

function splitter(str, l){
    var strs = [];
    while(str.length > l){
        var pos = str.substring(0, l).lastIndexOf(' ');
        pos = pos <= 0 ? l : pos;
        strs.push(str.substring(0, pos));
        var i = str.indexOf(' ', pos)+1;
        if(i < pos || i > pos+l)
            i = pos;
        str = str.substring(i);
    }
    strs.push(str);
    return strs;
}
Run Code Online (Sandbox Code Playgroud)

用法示例:

splitter("This is a string with several characters.\
120 to be precise I want to split it into substrings of length twenty or less.", 20);
Run Code Online (Sandbox Code Playgroud)

输出:

["This is a string","with several","characters. 120 to",
"be precise I want","to split it into","substrings of",
"length twenty or","less."]
Run Code Online (Sandbox Code Playgroud)