Сократите большую строку без сокращения слов и сохраните в массив в 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.']

Теперь я хотел бы сделать цикл для достижения этого, потому что у меня есть меньшие строки и большие строки, поэтому, вероятно, эта строка будет сокращаться больше или меньше раз. Как сделать? Спасибо

Вы хотите разделить между предложениями или словами? В тексте написано одно, а в коде другое

MTCoster 22.05.2019 15:46

Разделите предложения так: let string = "abc def. ghij kl."; array = ['abc def.', 'ghij kl.']; @MTCoster

SkroS2 22.05.2019 15:50
split('.')? "abc def. ghij kl.".split('.').filter(s => !!s).map(s => `${s}.`)
Mosh Feu 22.05.2019 15:54

@MoshFeu Это то, что я хочу, но я хочу, чтобы разделение выполнялось каждые 4000 символов в «.» ближайший и не к каждому "."

SkroS2 22.05.2019 16:01

Попался. Итак, кажется, вы получили ответ :)

Mosh Feu 22.05.2019 16:17
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Сравнение структур данных: Массивы и объекты в Javascript
Сравнение структур данных: Массивы и объекты в Javascript
Итак, вы изучили основы JavaScript и хотите перейти к изучению структур данных. Мотивация для изучения/понимания Структур данных может быть разной,...
Создание собственной системы электронной коммерции на базе Keystone.js - настройка среды и базовые модели
Создание собственной системы электронной коммерции на базе Keystone.js - настройка среды и базовые модели
Прошлая статья была первой из цикла статей о создании системы электронной коммерции с использованием Keystone.js, и она была посвящена главным образом...
Приложение для отслеживания бюджета на React js для начинающих
Приложение для отслеживания бюджета на React js для начинающих
Обучение на практике - это проверенная тема для достижения успеха в любой области. Если вы знаете контекст фразы "Практика делает человека...
Стоит ли использовать React в 2022 году?
Стоит ли использовать React в 2022 году?
В 2022 году мы все слышим о трендах фронтенда (React, Vue), но мы не знаем, почему мы должны использовать эти фреймворки, когда их использовать, а...
0
5
59
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете сделать это, используя метод .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;
}

Другие вопросы по теме