Разбить строку на равные части JavaScript
Дана строка любой длины.
Её нужно разбить на равные части и вернуть их в виде массива.
Если в последней части не хватает символов дополнить их точками.
Например в функцию передаётся длина как аргумент - 4 и сама строка.
Input: "lorem ipsum dolor sit amet"
Output: ["lore", "m ip", "sum ", "dolo", "r si", "t am", "et.."]
В последнюю часть попали только 2 буквы, поэтому остаток заполнен точками.
Ответы (2 шт):
Может быть несколько подходов для разбиения строки на равные части.
Например:
- Дополняем длину строки так, чтобы она без остатка делилась на длину частей
- в цикле берем соответствующие подстроки
Для дополнения строки до нужной длины, заполнением недостатка конкретным символом можно воспользоваться методом padEnd
Для получения подстроки, можно воспользоваться методом substring
Количество итераций цикла, соответствует количеству полученных частей.
var str = "lorem ipsum dolor sit amet";
function* chunk(str, len) {
var padded = str.padEnd(Math.ceil(str.length / len) * len, '.');
for (var i = 0; i < padded.length / len; i++) {
yield padded.substring(i * len, (i + 1) * len);
}
}
console.log([...chunk(str, 4)]);
console.log([...chunk(str, 8)]);
Разбиваем по заданной длине части.
const str = "lorem ipsum dolor sit amet";
const length = 5; // длина одной части
const pattern = new RegExp(".{1," + length + "}", "ig");
let res = str.match(pattern).map(item => item.padEnd(length, "."));
console.log(res);
Разбиваем по заданному кол-ву частей.
const str = "lorem ipsum dolor sit amet";
const count = 6; // кол-во частей, которые необходимо получить
const length = Math.ceil(str.length / count);
const pattern = new RegExp(".{1," + length + "}", "ig");
let res = str.match(pattern).map(item => item.padEnd(length, "."));
console.log(res);