строка, изменить регистр заглавных букв всех слов
Добрейшего денечка уважаемые. У нас есть строка аля "Вася петя маша таня", между слов пробелы, нужно сделать буквы имен заглавными, при помощи toUpperCase(), indexOf() и for/while. Другими методами пользоваться нельзя. Без массивов.
Индексы пробелов я нашел по шаблону с учебника: var str = "Ослик Иа-Иа посмотрел на виадук"; // ищем в этой строке var target = "Иа"; // цель поиска var pos = 0; while (true) { var foundPos = str.indexOf(target, pos); if (foundPos == -1) break; alert( foundPos ); // нашли на этой позиции pos = foundPos + 1; // продолжить поиск со следующей } Дальше я пытаюсь как то манипулировать newStroke = str.slice(...) + str[foundPos].toUpperCase() - не получается. То есть алгоритм такой - я нашел все позиции пробелов, могу заменить буквы на заглавные, но создать всю строку - печаль, беда. |
Цитата:
Если второе, то я бы сделал так: function func(string) { let position; const result = string.split(''); while ((position = string.indexOf(' ', position + 1)) >= 0) result.splice(++position, 1, result[position--].toUpperCase()); return result.join(''); }; alert( func('Вася петя маша таня') ); |
Все первые буквы, всех слов - заглавными, массивами мы не пользуемся, просто цикл и строка. Спасибо.
|
fluorke,
function func(string) { let position = -1; do { const before = string.substring(0, position + 1); //with space const needle = string.substr(position + 1, 1); const after = string.substring(position + 2); string = before + needle.toUpperCase() + after; } while ((position = string.indexOf(' ', position + 1)) >= 0); return string; }; alert( func('вася петя маша таня') ); |
при помощи toUpperCase(), indexOf() и for/while. Другими методами пользоваться нельзя
var str = "Вася петя маша таня"; var strNew = ""; var pos = 0; while(pos < str.length) { var foundPos = str.indexOf(" ", pos); if (foundPos == -1) break; for(var i = pos; i <= foundPos;i++) { strNew = strNew + str[i] } pos = foundPos + 1; strNew = strNew + str[pos].toUpperCase(); pos++; } for(var i = pos; i < str.length;i++) { strNew = strNew + str[i] } alert(strNew); |
function* func(string) { var prev = " "; for(const char of string) yield prev = prev === " " ? char.toUpperCase() : char; } alert([...func("вася петя маша таня")].join("")); |
:-?
var str = "Вася петя маша таня"; var strNew = ""; var up = true; for(var i = 0; i < str.length;i++) { strNew += up ? str[i].toUpperCase() : str[i]; up = str[i] == " "; } alert(strNew); |
Спасибо всем за решения. Меня хватило на такое:
var str = "вася петя маша таня"; n = str[0].toUpperCase() x = 1 while (x < str.length){ if (str[x] == ' '){ n += str[x] + str[x+1].toUpperCase() x+=2 } else { n += str[x] x++ } } alert(n) |
рони,
Так то легко... А я использовал все разрешенные методы |
Часовой пояс GMT +3, время: 10:06. |