我正在尝试将字符串中每个单词的第一个字母大写。我的代码如下:
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并且还没有那么远!因此,非常感谢任何不涉及正则表达式的提示
答案 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"