string [0] .toUpperCase()没有返回预期的结果?

时间:2015-10-15 08:21:00

标签: 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!
        aWord[0]=aWord[0].toUpperCase();
        newArray.push(aWord);
    };
    newArray.join(" ");
    return newArray;
};

所以我看到的问题是,当我尝试将aWord [0]分配给它的大写值时,分配不会发生?如何修改此项以便进行分配?

PS。我知道有一种正常的表达方法可以一举做到这一点,但我刚刚在几天前拿起了javascript并且还没有那么远!因此,非常感谢任何不涉及正则表达式的提示

3 个答案:

答案 0 :(得分:10)

字符串是不可变的,所以这不会做任何事情:

OOM killer

相反,您必须创建 new 字符串:

aWord[0]=aWord[0].toUpperCase();

答案 1 :(得分:2)

aWord[0]是一个char,你不能为char添加一个新的char,比如'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);
};

答案 2 :(得分:1)

您可以编写一个为您完成工作的功能,如下所示

function capsFirstLetter(str){
return str.substr(0,1).toUpperCase()+str.substr(1);

}
capsFirstLetter("hello") // Hello

或者您可以在String类中添加该方法并将其用于所有字符串实例

   String.prototype.capsFirstLetter = function(){
       return this.substr(0,1).toUpperCase() + this.substr(1);
    } 
 "hello".capsFirstLetter() // "Hello"