我一直在尝试将字符串中每个单词的第一个字母大写,但它表示TypeError: Cannot assign to read only property '0' of string 'i'
。我的逻辑看起来很好但肯定我这样做的方式不对。任何建议。
function titleCase(str) {
str = str.toLowerCase();
var word = str.split(" ");
// console.log(word[0][0]);
for (var i = 0; i < word.length - 1; i++) {
word[i][0] = word[i][0].toUpperCase();
}
console.log(word);
return word;
}
titleCase("I'm a little tea pot");
答案 0 :(得分:3)
尝试如下:(参见代码中的评论)
function titleCase(str) {
str=str.toLowerCase();
var word = str.split(" ");
for (var i=0; i < word.length; i++) { // you don't need -1 here as you had
word[i] = word[i].charAt(0).toUpperCase() + word[i].slice(1); // see changes in this line
}
console.log(word);
return word;
}
titleCase("I'm a little tea pot");
答案 1 :(得分:2)
字符串有替换方法,该方法接受一个函数:
//using alert controller code in this class.
showAlert(){
title: 'static',
subtitle: '', // need to add this message dynamically from the function that called the showAlert() function.
button: [Okay];
}
//code implemented.
答案 2 :(得分:1)
您可以通过内置数组函数直接将字符串转换为您想要的字符串。 使用map函数,您将直接获得它,无需运行for循环。
("I'm a little tea pot")
.split(" ")
.map(function(d){
return d[0].toUpperCase()+d.substring(1,d.length)
}).join(" ")
答案 3 :(得分:1)
您可以合并split
和map
功能来实现此目标。
function titleCase(str) {
return str.toLowerCase().split(" ").map(function(word) {
var _word = word.split("");
_word[0] = _word[0].toUpperCase();
return _word.join("");
}).join(" ");
}
console.log(titleCase("I'm a little tea pot"));
答案 4 :(得分:1)
使用split,array map和reduce:
var str = "I'm a little tea pot";
var res = str.split(" ")
.map(word => word.charAt(0).toUpperCase() + word.substr(1))
.reduce((m, o) => { m = m + " " + o; return m }, "")
console.log(res);
&#13;
也可以使用Join代替reduce:
var str = "I'm a little tea pot";
var res = str.split(" ")
.map(word => word.charAt(0).toUpperCase() + word.substr(1))
.join(" ");
console.log(res);
&#13;
答案 5 :(得分:1)
您可以使用map
函数创建修改后的单词数组,并使用join
重新创建字符串
function titleCase(str) {
str = str.toLowerCase();
var word = str.split(" ");
var x = word.map(function(item) {
return item.charAt(0).toUpperCase() + item.substring(1, item.length);
}).join(" ");
return x
}
console.log(titleCase("I'm a little tea pot"));
&#13;
仅使用CSS
#test {
text-transform: capitalize
}
&#13;
<div id="test"> I'm a little tea pot</div>
&#13;