Приведение первого символа к большому регистру
Здравствуйте, подскажите пожалуйста, почему в данном примере не получается привести к верхнему регистру например второй символ из строки или всю строку?
Почему приводит только первый символ к верхнему регистру, даже при отсутствии параметров .charAt() (вторая строка) ? function ucFirst(firstLetter){ var newStr = firstLetter.charAt(0).toUpperCase(); for(var i=1; i<firstLetter.length; i++) { newStr += firstLetter.charAt(i); } return newStr; } |
не проще ли так:
function ucFirst(firstLetter){ return firstLetter.toUpperCase(); } а в контексте данного примера в цикле for должно быть firstLetter.charAt(i).toUpperCase(); вместо firstLetter.charAt(i); |
Цитата:
Цитата:
|
Так если всю строку
return firstLetter.toUpperCase(); а запись firstLetter.charAt(i).toUpperCase(); приводит к подобному ответу "qwertWERT" то есть вся строка сама по себе возвращается + с верхним регистром без первого символа. |
Цитата:
Почему? |
function ucFirst(firstLetter,e){ var newStr = ''; for(var i=0; i<firstLetter.length; i++) { newStr += e==i ? firstLetter.charAt(i).toUpperCase() : firstLetter.charAt(i); } return newStr; } ucFirst('привет',1) // подразумевается вторая буква |
Очень не эффективное решение в плане производительности. Есть тема делать нормально:
function rangeToUpperCase(string, from, to) { if (!to) to = from + 1; return string.slice(0, from) + string.slice(from, to).toUpperCase() + string.slice(to); } alert( rangeToUpperCase('test', 1) ); |
Цитата:
Цитата:
Спасибо за ответ. |
Часовой пояс GMT +3, время: 16:38. |