Как да направя първата буква в низ главна, но да не променям големината на останалите букви?
Например:
"this is a test"
-> "This is a test"
"Айфеловата кула"
-> "Айфеловата кула"
"/index.html"
-> "/index.html"
function capitalizeFirstLetter(string) {
return string.charAt(0).toUpperCase() + string.slice(1);
}
Някои други отговори модифицират String.prototype
(този отговор също го правеше), но сега не бих препоръчал това да се прави заради възможността за поддържане (трудно е да се разбере къде е добавена функцията към prototype
и може да доведе до конфликти, ако друг код използва същото име / браузър добави местна функция със същото име в бъдеще).
Ето един по-обектно-ориентиран подход:
String.prototype.capitalize = function() {
return this.charAt(0).toUpperCase() + this.slice(1);
}
Ще извикате функцията по следния начин:
"hello world".capitalize();
Очакваният резултат е:
"Hello world"
Тук има функция, наречена ucfirst() (съкращение от "първа буква от горен регистър"):
function ucfirst(str) {
var firstLetter = str.substr(0, 1);
return firstLetter.toUpperCase() + str.substr(1);
}
Можете да напишете главни букви в даден низ, като извикате ucfirst("some string") -- например,
ucfirst("this is a test") --> "This is a test"
Това става чрез разделяне на низа на две части. На първия ред изважда firstLetter и след това на втория ред изписва firstLetter с главна буква, като извиква firstLetter.toUpperCase() и го съединява с останалата част от низа, която се намира чрез извикване на str.substr(1).
Може да си помислите, че това няма да успее при празен низ, и наистина в език като C би трябвало да се погрижите за това. В JavaScript обаче, когато вземете подниз от празен низ, просто получавате празен низ обратно.