Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Получить несколько подстрок из одной строки (https://javascript.ru/forum/misc/84103-poluchit-neskolko-podstrok-iz-odnojj-stroki.html)

NovichokJS 03.06.2022 10:09

Получить несколько подстрок из одной строки
 
Не пойму почему не получаю нужный результат. Выводит только первые 4 символа. Помогите пожста.

const splitText = (str, len) => {
    const strArr = [];

    if (typeof str !== 'string') { return null; }

    let chunk = str.substring(0, len);

    strArr.push(chunk[0].toUpperCase() + chunk.slice(1));

    return strArr.join('\n');
}

console.log(splitText('abcdefghijklmnop', 4));
/*  Abcd
    Efgh
    Ijkl
    Mnop
*/

Дмитрий Луценко 03.06.2022 10:26

Здравствуйте.

Ваша проблема заключается в том, что Вы не двигаете индекс для слайсинга.

Дмитрий Луценко 03.06.2022 10:26

const splitText = (str, len) => {
    const strArr = [];
    let i = 0;
    if (typeof str !== 'string') { return null; }

    while (i < str.length) {

        let chunk = str.substring(i, i + len);

        strArr.push(chunk[0].toUpperCase() + chunk.slice(1));

        strArr.join('\n');
        i += (len);
    }
    return strArr;
    
}

console.log(splitText('abcdefghijklmnop', 4));
/*  Abcd
    Efgh
    Ijkl
    Mnop
*/

NovichokJS 03.06.2022 10:40

я понял, спасибо

рони 03.06.2022 10:49

Дмитрий Луценко,
пост #3 что делает строка 12?

NovichokJS 03.06.2022 10:53

я немного уже преобразовал:

const splitText = (str, len) => {
    const strArr = [];
    let startPos = 0;
    if (typeof str !== 'string') { return null; }

    while (startPos < str.length) {

        let chunk = str.substring(startPos, startPos + len);

        strArr.push(chunk[0].toUpperCase() + chunk.slice(1));


        startPos += len;
    }
    return strArr.join('\n');

}

ksa 03.06.2022 10:53

Цитата:

Сообщение от NovichokJS
Не пойму почему не получаю нужный результат. Выводит только первые 4 символа.

Так ты так и написал...
Цитата:

Сообщение от NovichokJS
let chunk = str.substring(0, len);


NovichokJS 03.06.2022 10:54

есть еще правда одно условие : функция должна делить на подстроки длиной 10 символов, если не задан второй аргумент.
Как это сделать корректно?

ksa 03.06.2022 10:59

NovichokJS, предложу такой вариант...
function splitText(txt, len = 10){
	txt = txt.match(new RegExp(`.{${len}}`,'g'))
	txt = txt.map(el => el[0].toUpperCase() + el.slice(1))
	return txt.join('\n')
}
alert(splitText('abcdefghijklmnop', 4))

NovichokJS 03.06.2022 11:14

ksa, большое спасибо вам!


Часовой пояс GMT +3, время: 14:21.