我试图更改字符串数组的子索引,但它没有修改。有jsbin link。
function LetterCapitalize(str) {
var arr = str.split(" ");
var nstr = "";
for (var i = 0; i < arr.length; i++) {
var ltr = arr[i][0];
console.log('ltr: ' + ltr.toUpperCase());
arr[i][0] = ltr.toUpperCase();
nstr += arr[i] + " ";
}
str = nstr.trim();
console.log("result: " + str);
return str;
}
LetterCapitalize("hello world");
&#13;
答案 0 :(得分:2)
您可以尝试以下内容:
function LetterCapitalize(str) {
var arr = str.split(" ");
var nstr = "";
for(var i=0; i<arr.length; i++){
arr[i] = arr[i][0].toUpperCase()+arr[i].slice(1);
nstr+= arr[i] + " ";
}
str = nstr.trim();
console.log("result: " + str);
return str;
}
console.log(LetterCapitalize("hello world"));
产生差异的一行如下:
arr[i] = arr[i][0].toUpperCase() + arr[i].slice(1);
我们在这里做的是将字符串的第一个字母大写为arr[i]
,然后将大写字母与其余字母连接起来。
答案 1 :(得分:2)
对于使用括号表示法的字符访问,尝试删除或为这些属性赋值将不会成功。涉及的属性既不可写也不可配置。
即。字符串是不可变的。
答案 2 :(得分:2)
你也可以使用string.replace
匹配每个单词中的第一个字符,使用回调函数来大写字符。
像这样。
var str = "hello world";
var newStr = str.replace(/\b(\w)/g, function(chr) {
return chr.toUpperCase()
})
console.log(newStr)
&#13;