Приведение первого символа к большому регистру
Здравствуйте, подскажите пожалуйста, почему в данном примере не получается привести к верхнему регистру например второй символ из строки или всю строку?
Почему приводит только первый символ к верхнему регистру, даже при отсутствии параметров .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, время: 08:41. |