Javascript 字符串[0]。toUpperCase()是否未返回预期结果?
我试图将字符串中每个单词的第一个字母大写。我的代码如下:Javascript 字符串[0]。toUpperCase()是否未返回预期结果?,javascript,Javascript,我试图将字符串中每个单词的第一个字母大写。我的代码如下: function LetterCapitalize(str) { var words=str.split(" "); var newArray=[]; for(i=0; i<words.length; i++) { var aWord=words[i]; //this line below doesn't work...don't know why! a
function LetterCapitalize(str)
{
var words=str.split(" ");
var newArray=[];
for(i=0; i<words.length; i++)
{
var aWord=words[i];
//this line below doesn't work...don't know why!
aWord[0]=aWord[0].toUpperCase();
newArray.push(aWord);
};
newArray.join(" ");
return newArray;
};
函数字母大写(str)
{
var words=str.split(“”);
var newArray=[];
for(i=0;iaWord[0]
是一个字符,您不能将一个字符指定为一个新字符,如'a'='b'
改用变量
for(i=0; i<words.length; i++)
{
var aWord=words[i];
//this line below doesn't work...don't know why!
var newChar =aWord[0].toUpperCase();
newArray.push(newChar);
};
for(i=0;i字符串是不可变的,因此这不会做任何事情:
aWord[0]=aWord[0].toUpperCase();
相反,您必须创建一个新字符串:
您可以编写一个函数来完成u的工作,如下所示
function capsFirstLetter(str){
return str.substr(0,1).toUpperCase()+str.substr(1);
}
capsFirstLetter("hello") // Hello
或者,您可以在String类中添加该方法,并将其用于所有String实例
String.prototype.capsFirstLetter = function(){
return this.substr(0,1).toUpperCase() + this.substr(1);
}
"hello".capsFirstLetter() // "Hello"
您只能读取字符,不能对其进行变异。我本打算回答这个问题,但已经有很多好的答案。还有一件事需要注意:您可能希望返回newArray.join(“”;
),现在您返回的是数组本身,而不是字符串。@EelkeSpaak谢谢大家提醒!aWord[0]
是字符不,它是一个字符串,JavaScript没有“字符”,只有一个字符的字符串。而且,你的更新只在数组中放入一个字符的字符串,而我相当确定他们也需要单词的其余部分。你是对的,我并没有把它直接称为字符
String.prototype.capsFirstLetter = function(){
return this.substr(0,1).toUpperCase() + this.substr(1);
}
"hello".capsFirstLetter() // "Hello"