缩短大字符串而不用切开单词,并以Javascript保存到数组

时间:2019-05-22 13:35:40

标签: javascript

我有不同长度的字符串。这些字符串很大,介于4000到20000个字符之间。 我希望将字符串全部切成4000个字符,而不用切掉整个单词的中间。然后将剪切后的字符串存储在数组中

我可以切割我的琴弦并恢复每个切割端。但是,我需要循环,因为某些字符串比其他字符串大

我当前的代码:

let string = 'One string with 9771 character, including "."';

let array = [];
let string2 = '';

var cutat = string.lastIndexOf('.',4000);
if(cutat!=-1){
  string2=string.substring(0,cutat)+".";
}

string = string.split(string2)
string = string[1]

array[0] = string2;

var cutat = string.lastIndexOf('.',4000);
if(cutat!=-1){
  string2=string.substring(0,cutat)+".";
}

string = string.split(string2)
string = string[1]

array[1] = string2;

var cutat = string.lastIndexOf('.',4000);
if(cutat!=-1){
  string2=string.substring(0,cutat)+".";
}

array[2] = string2;

console.log(array)

目前,我得到的数组中的字符串每4000个字符被分割一次,而中间没有一个单词。

Array = ['the first 4000 characters.','the second.','the last.']

现在,我想做一个循环来实现这一点,因为我有较小的字符串和较大的字符串,所以它可能会减少此字符串的次数。怎么做?谢谢

1 个答案:

答案 0 :(得分:0)

您可以使用.substr方法和while循环来做到这一点:

const s_limit = 4000;
function cutter(str) {
    var chunks = [];
    while(str.lastIndexOf('.', s_limit) > 0) {
        var ind = str.lastIndexOf('.', s_limit)+1;
        chunks.push(str.substr(0, ind));
        str = str.substr(ind);
    }
    return chunks;
}