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 13:23

if (newStr.length < len) {
            newStr += dot;
        }

Output: 

Abcd
Efgh
Ijkl
Mn.


добавляет одну точку, что и логично. Но вот как сделать чтоб добавляло нужное кол-во точек?

Дмитрий Луценко 03.06.2022 13:23

Цитата:

Сообщение от NovichokJS (Сообщение 545857)
Спасибо, пробую!

На заметку:

let str = "44"

str = str.repeat(4);
console.log(str);
//44444444

Дмитрий Луценко 03.06.2022 13:25

Цитата:

Сообщение от NovichokJS (Сообщение 545858)
if (newStr.length < len) {
            newStr += dot;
        }

Output: 

Abcd
Efgh
Ijkl
Mn.


добавляет одну точку, что и логично. Но вот как сделать чтоб добавляло нужное кол-во точек?

Вы мыслите почти верно)

Дмитрий Луценко 03.06.2022 13:32

Давайте подскажу решение способом посимвольного добавления:

Создаю переменную для хранения разницы между текущим размером newStr и len.

Пока переменная не равна 0, я буду добавлять к newStr нужный символ. мою переменную я затем уменьшаю на 1.

NovichokJS 03.06.2022 13:33

Цитата:

Сообщение от Дмитрий Луценко (Сообщение 545862)
Давайте подскажу решение способом посимвольного добавления:

Создаю переменную для хранения разницы между текущим размером newStr и len.

Пока переменная не равна 0, я буду добавлять к newStr нужный символ. мою переменную я затем уменьшаю на 1.

получилось по ходу

if (newStr.length < len) {
            dot = dot.repeat(len - newStr.length);
            newStr += dot;
        }


Спасибочки!

Дмитрий Луценко 03.06.2022 13:37

Цитата:

Сообщение от NovichokJS (Сообщение 545863)
получилось по ходу

if (newStr.length < len) {
            dot = dot.repeat(len - newStr.length);
            newStr += dot;
        }


Спасибочки!

Изящнее не придумаешь :)
:victory:

рони 03.06.2022 13:42

Цитата:

Сообщение от NovichokJS
if (newStr.length < len) {

let n = str.length % len;
str = str.padEnd(n + str.length, dot);



const splitText = (str, len = 10, dot = '*') => {
            if (typeof str !== 'string') {
                return null;
            }
            let n = str.length % len;
            str = str.padEnd(n + str.length, dot);

            let txt = '';
            for (let i = 0; i < str.length; i++) {
                let k = i % len, e = str[i];
                txt += k == 0 ? e.toUpperCase() : k == len - 1 ? `${e}\n` : e
            }
            return txt;
        }
        console.log(splitText('abcdefghijklmn', 4));
        /*  Abcd
            Efgh
            Ijkl
            Mn**
        */

NovichokJS 03.06.2022 15:06

Цитата:

Сообщение от рони (Сообщение 545865)
let n = str.length % len;
str = str.padEnd(n + str.length, dot);



const splitText = (str, len = 10, dot = '*') => {
            if (typeof str !== 'string') {
                return null;
            }
            let n = str.length % len;
            str = str.padEnd(n + str.length, dot);

            let txt = '';
            for (let i = 0; i < str.length; i++) {
                let k = i % len, e = str[i];
                txt += k == 0 ? e.toUpperCase() : k == len - 1 ? `${e}\n` : e
            }
            return txt;
        }
        console.log(splitText('abcdefghijklmn', 4));
        /*  Abcd
            Efgh
            Ijkl
            Mn**
        */

для меня пока ваш код сложноват))


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