Разделение большой строки на куски размера n в JavaScript

Я хотел бы разбить очень большую строку (скажем, 10 000 символов) на блоки размером N.

Как лучше всего это сделать с точки зрения производительности ?

Например: «1234567890» , разделенное на 2, станет [«12», «34», «56», «78», «90»] .

Что-то вроде этого будет возможно, используя String.prototype.match , и если да, будет ли это лучший способ сделать это с точки зрения производительности?

182
задан Michał Perłakowski 28 August 2015 в 03:20
поделиться

2 ответа

Вот решение, которое я предложил для шаблонных строк после небольшого экспериментирования:

Использование:

chunkString(5)`testing123`

function chunkString(nSize) {
    return (strToChunk) => {
        let result = [];
        let chars = String(strToChunk).split('');

        for(let i = 0; i < (String(strToChunk).length / nSize); i++) {
            result = result.concat(chars.slice(i*nSize,(i+1)*nSize).join(''));
        }
        return result
    }
}

document.write(chunkString(5)`testing123`);
// returns: testi,ng123

document.write(chunkString(3)`testing123`);
// returns: tes,tin,g12,3
0
ответ дан 23 November 2019 в 06:03
поделиться

Моя проблема с вышеупомянутым решением - то, что оно beark строка в формальный размер разделяет на блоки независимо от положения в предложениях.

я думаю следующий лучший подход; хотя требуется некоторую тонкую настройку производительности:

 static chunkString(str, length, size,delimiter='\n' ) {
        const result = [];
        for (let i = 0; i < str.length; i++) {
            const lastIndex = _.lastIndexOf(str, delimiter,size + i);
            result.push(str.substr(i, lastIndex - i));
            i = lastIndex;
        }
        return result;
    }
0
ответ дан 23 November 2019 в 06:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: