Why won't array[i].charAt(0).toUpperCase() pass on to array[i][0]
本问题已经有最佳答案,请猛点这里访问。
我正在尝试制作一个javascript程序,它获取一个字符串,将每个单词的第一个字母大写,并将其他所有字符变为小写。
1 2 3 4 5 6 7 8 9 10 11 12 | 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")); |
由于某种原因,
javascript字符串是不可变的,因此您不能通过使用
现场演示:
1 2 3 4 5 6 7 8 9 10 11 12 | 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")); |
jsfiddle版本:https://jsfiddle.net/rakdtpbb/
听起来你想做些类似的事情:
1 2 3 4 5 6 7 8 9 10 11 12 | 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"); |
字符串可以使用括号表示法作为字符数组读取。但是,不能这样更改特定字符,因为字符串不是可变对象。