首页 > 解决方案 > 缩短一个大字符串而不削减单词并在Javascript中保存到数组中

问题描述

我有不同长度的字符串。这些是非常大的字符串,介于 4000 到 20 000 个字符之间。我希望在不剪切一个完整的单词中间的情况下剪切一个所有 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.']

现在,我想创建一个循环来实现这一点,因为我有更小的字符串和更大的字符串,所以它可能会或多或少地切割这个字符串。怎么做?谢谢

标签: javascript

解决方案


您可以使用.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;
}

推荐阅读