NovichokJS,
:write: :) const splitText = (str, len = 10) => { if (typeof str !== 'string') { return null; } 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('abcdefghijklmnop', 4)); /* Abcd Efgh Ijkl Mnop */ |
рони, по одному символу читать строку - моветон... :)
|
ksa,
:lol: куда спешить?! |
рони, я тут собеседования провожу с кандидатами... Упражнения им разные даю...
Проще чем вот эта задачка. И они почти всегда делают "перебор строки посимвольно". А я их критикую. :D |
ksa,
match тоже можно "покритиковать", если строка будет пустая или два символа? |
Цитата:
Я в некоторых упражнениях указываю - без регулярок. Ведь результат "нарезкой" по len символов отработает быстрее. Цитата:
function splitText(txt, len = 10){ txt = txt.match(new RegExp(`.{0,${len}}`,'g')) txt = txt.map(el => el === '' ? '' : el[0].toUpperCase() + el.slice(1)) if (txt[txt.length -1] === '') txt.pop() return txt.join('\n') } alert(splitText('abcdefghijklmnop', 4)) alert(splitText('ab', 4)) alert(splitText('', 4)) |
усложнил себе задачу и хочу чтобы последняя подстрока дополнялась точками если не хватает по кол-ву символам, таким образом:
console.log(splitText('abcdefghijklmn', 4)); // Output: /* Abcd Efgh Ijkl Mn.. */ Как сделать такое можно? |
куда добавить в действие переменную dot?
const splitString = (str, len = 10) => { if (typeof str !== 'string') { return null; } let arr = []; let startPos = 0; let dot = '.' while (startPos < str.length) { let newStr = str.substring(startPos, startPos + len); arr.push(newStr[0].toUpperCase() + newStr.slice(1)); startPos += len; } return arr.join('\n'); } |
Проверьте длину подстроки, записанной в newStr, если она меньше положенного, добавьте точки
|
Цитата:
|
Часовой пояс GMT +3, время: 00:47. |