我正在尝试创建一个带有字符串的javascript程序,并将每个单词的第一个字母大写,并使每个其他字符小写。
function titleCase(str) {
str = str.toLowerCase();
var array = str.split(" ");
for(var i =0; i< array.length ; i++){
array[i][0] = array[i].charAt(0).toUpperCase();
}
var finalString = array.join(" ")
return finalString ;
}
alert(titleCase("I'm a little tea pot"));
&#13;
由于某种原因,array[i].charAt(0).toUpperCase();
无法将其值传递给array[i][0]
。这最终使得它只返回所有小写字母的字符串,而不是让每个单词的首字母大写。
答案 0 :(得分:3)
听起来你想做更像这样的事情:
function titleCase(str) {
str = str.toLowerCase();
var array = str.split(" ");
for(var i =0; i< array.length ; i++){
//array[i] is an immutable string. So we need to rebuild it instead.
array[i] = array[i].charAt(0).toUpperCase() + array[i].substring(1);
}
var finalString = array.join(" ")
return finalString ;
}
titleCase("I'm a little tea pot");
可以使用括号表示法将字符串 读取为char数组。但是,由于字符串不是可变对象,因此无法更改特定字符。
答案 1 :(得分:3)
JavaScript字符串是不可变的,因此您无法通过使用[]
运算符对其进行索引来实际更改单个字符。这是一个使用substring
来构建最终字符串的固定版本:
现场演示:
function titleCase(str) {
str = str.toLowerCase();
var array = str.split(" ");
for(var i =0; i< array.length ; i++){
array[i] = array[i].charAt(0).toUpperCase() + array[i].substring(1);
}
var finalString = array.join(" ")
return finalString ;
}
alert(titleCase("I'm a little tea pot"));
&#13;
JSFiddle版本:https://jsfiddle.net/rakdtpbb/
答案 2 :(得分:0)
toUpperCase()
方法返回转换为大写的字符串的值,但不影响字符串本身的值。