Разрыв строки при определенном количестве слов

У меня есть длинная строка, и я хочу разбить эту длинную строку на 128 слов пары массивов. Например. строка содержит 500 слов. тогда окончательный вывод должен быть массивом из 3 элементов

элемент имеет первые 128 слов, второй элемент имеет следующие 128 слов, а третий элемент должен содержать остальные слова.

Я пробовал много способов, но не работал для меня. помогите пожалуйста если кто знает

заранее спасибо.

«Я пробовал много способов» на самом деле не описывает ваши усилия. Поделитесь некоторыми подробностями, пожалуйста.

Scott Sauyet 07.11.2022 17:52

какова ваша попытка? Stack Overflow — не то место, где можно задавать проблемы с кодированием и ожидать ответов, когда вы не показали, что пробовали.

Samathingamajig 07.11.2022 17:52

так что-то вроде разделения строки на куски? разделите строку на пустое место, а затем сделайте это stackoverflow.com/questions/8495687/split-array-into-chunks

cmgchess 07.11.2022 17:55

Кроме того, либо ваш вопрос запутан, либо ваша арифметика отключена. Разве <500 words> не следует разбивать на [<words 1 - 128>, <words 129 - 256>, <words 257 - 388>, and <words 289 - 500>], который состоит из четырех групп?

Scott Sauyet 07.11.2022 17:56

поэтому разделите его на слова и соедините 128, 128 и поместите остальные в последний массив....

epascarello 07.11.2022 17:58
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
5
85
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

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

Если вы хотите, чтобы каждый массив содержал 128 слов, а не символов, вы можете сначала разделить строку по пробелу, чтобы сохранить слова в массиве, а затем разбить его на фрагменты следующим образом:

const string = "hello world hello world hello world "
const words = string.split(" ")


function sliceIntoChunks(arr, chunkSize) {
  const noEmptyStrsArr = arr.filter(item => item.length > 0)

  const res = [];
  for (let i = 0; i < noEmptyStrsArr.length; i += chunkSize) {
    const chunk = noEmptyStrsArr.slice(i, i + chunkSize);
    res.push(chunk);
  }
  return res;
}

console.info(sliceIntoChunks(words, 2))

спасибо, @jessica-98 за ваше решение. Я добавил еще несколько строк, если кто-то хочет 128 слов в виде строки, а не отдельных слов. тогда вы можете рассмотреть это решение.

const string = "Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum,\"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of  "
const words = string.split(" ")


function sliceIntoChunks(arr, chunkSize) {
  const noEmptyStrsArr = arr.filter(item => item.length > 0)

  const res = [];
  for (let i = 0; i < noEmptyStrsArr.length; i += chunkSize) {
    const chunk = noEmptyStrsArr.slice(i, i + chunkSize);
    res.push(chunk);
  }
  return res;
}

var res=sliceIntoChunks(words, 128)

var newArr=[]
for(let i=0;i<res.length;i++){
/* for(let j=0;j<res[i].length;j++){
newArr.push()
}*/

newArr.push(res[i].join(" "))

}

console.info(newArr)

Поскольку здесь уже есть рабочие ответы, я поделюсь своим рекурсивным подходом. Но в будущем, пожалуйста, поделитесь работой, которую вы сделали сами. Если вы не смогли ничего закодировать, поделитесь некоторыми своими мыслительными процессами.

Здесь мы строим это поверх повторно используемой функции, chunk которая разбивает любой массив на куски одинакового размера, а также, возможно, меньший последний кусок. Наша функция chunkWords разбивает строку по пробелу, а затем запускает chunk результат.

const chunk = (n) => (xs) =>
  xs .length <= n ? [xs] : [xs .slice (0, n), ... chunk (n) (xs .slice (n))]

const chunkWords = (n) => (s) =>
  chunk (n) (s .split (/\s+/)) // .map (ss => ss .join (' '))

console .log (
  chunkWords (3) ('Now is the time for all good men to come to the aid of their party')
)

Если вы хотите, чтобы результат был преобразован обратно в строки, просто раскомментируйте вызов .map в chunkWords. Это даст ["Now is the", "time for all", "good men to", "come to the", "aid of their", "party"].

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

Новый ученик Голанг. Почему моя локальная переменная сохраняется между вызовами?
Существует ли алгоритм с постоянным временем (с предварительной обработкой) для пересечения прямоугольника с закругленными углами с многоугольником
Проблема суммы подмножества с известным размером подмножества и массивом, являющимся диапазоном
Обозначение формулы Big O - P * R в квадрате
Как найти в строке все слова, начинающиеся с заглавной буквы? Как имя ("Мое Имя и другое Его Имя")?
Как пропустить следующие две итерации цикла for с помощью python?
Количество делителей от простой факторизации
Делители числа, имеющего ровно 4 делителя
Алгоритм Вопрос - Как узнать, какая компания такси всегда лучше, исходя из фиксированной цены и цены, которая меняется в зависимости от пройденного километража
Понимание пространственно-временной сложности Leetcode 1366