Неработает код для форматирования текста
Я недавно начал изучать JavaScript и у меня возникла проблема.
Нужно чтобы в полученном тексте строки были не больше 20 символов я написал вот такой код: str = prompt('Введите текст.',''); nstr = []; a = 0; //номер ячейки b=20; //условие для перехода на новую строку for (i=0; i<str.length; i++) { if (i > b) {a+=1; b+=20;}; nstr[a] = nstr[a] + charAt(i); } document.write(nstr.join('<br>')); //каждая новая строка записывается в новую ячейку массива nstr но этот код не работает. |
Цитата:
|
Спасибо, сейчас попробую.
|
Всеравно не работает:
str = prompt('Введите текст.',''); nstr = []; a = 0; //номер ячейки b=20; //условие для перехода на новую строку for (i=0; i<str.length; i++) { if (i > b) {a+=1; b+=20;}; nstr[a] += str.substr(i, 1); } document.write(nstr.join('<br>')); |
Хотя нет кажется я понял.
|
Вот нужно заменить:
for (i=0; i<str.length; i++) { if (i > b) {a+=1; b+=20;}; nstr[a] = nstr[a] + charAt(i); } на: for (i=0; i++) { nstr[i] = str.substr(i * 20, 20); if (nstr[i] = "") {break}; } |
Всеравно не работает(
|
str="Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."; lines_num= Math.floor(str.length/20) + (str.length%20 ? 1 : 0);// вычисляем кол-во строк arr=[]; for (var i=0; i!= lines_num; ++i) { arr.push(str.substring(i*20, (i+1)*20)); }; alert(arr.join("\n")); Хотя лучше регулярками: str="Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."; alert(str.match(/[\s\S]{0,20}/g).join("\n")); UPD: Упс, ошибка вышла. Поправил регулярку. UPD: Правильнее использовать Math.floor. |
А что неправильно в моем варианте?
Что за Math.round? И что за регулярки? |
Цитата:
nstr[i] = str.substr(i * 20, 20); Вы берёте символы от i*20 до 20-ти. Это не есть правильно. Цитата:
Цитата:
И вообще-то поиск есть. |
Часовой пояс GMT +3, время: 08:37. |