@fajid

Как разбить строку на определенное количество строк?

Как разбить строку на определенное количество строк?

подаю на вход строку и нужное кол-во строк
foo('asdfghjklqwerty', 3)
на выходе хочу получить либо новые строки, либо массив этих строк
asdfg
hjklq
werty
  • Вопрос задан
  • 191 просмотр
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
function chunked(str, chunkCount) {
  const chunkLen = Math.ceil(str.length / chunkCount);
  return Array.from(
    { length: chunkCount },
    (n, i) => str.slice(i * chunkLen, (i + 1) * chunkLen)
  );
}

или

function chunked(str, chunkCount) {
  return str.match(RegExp(`.{1,${Math.ceil(str.length / chunkCount)}}`, 'g'));
}

или

function chunked(str, chunkCount) {
  return str.split(RegExp(`(.{${Math.ceil(str.length / chunkCount)}})`)).filter(Boolean);
}


UPD. В комментариях докладывают:

неаккуратненько как-то:
chunked('test', 3) // [ "te", "st", "" ]

Это поправимо. Наверное.
const chunked = (str, chunkCount) =>
  chunkCount <= str.length
    ? Array.from(
        { length: chunkCount },
        function(n, i) {
          return str.slice(i * this, i === chunkCount - 1 ? str.length : (i + 1) * this);
        },
        str.length / chunkCount | 0
      )
    : 'извини, столько непустых кусков нарезать нельзя';
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
sergiks
@sergiks Куратор тега JavaScript
♬♬
  1. получите длину исходной строки
  2. разделите на нужное кол-во строк с округлением в бОльшую сторону
  3. вытаскивайте под-строки из исходной строки в цикле
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы