更改字符串中某些单词的首字母

时间:2019-02-21 17:43:03

标签: javascript arrays

我希望能够更改字符串中某些单词的首字母,特别是因为我想将'john doe'的名字和姓氏大写。我已经编写了这段代码:

let name = 'john doe';
name = name.split(' ');
name[0][0] = name[0][0].toUpperCase();
name[1][0] = name[1][0].toUpperCase();
console.log(name.join(' '));

但是,我的代码不会执行任何更改。

Output:
> "john doe"

Expected output:
> "John Doe"

我想知道问题是什么,所以我删除了toUpperCase()并记录了每个步骤。

let name = 'john doe';
name = name.split(' ');
console.log(name);
console.log(name[0][0]);
name[0][0] = 'p';
console.log(name[0][0]);

输出显示该字符串已成功转换为数组。它表明name[0][0]确实具有值'j'。但是它不会更改为'p'。

Output: 
> "Array ["john", "doe"]"
> "j"
> "j"

Expected output:
> "Array ["john", "doe"]"
> "j"
> "p"

我没有理由不这样做。

1 个答案:

答案 0 :(得分:0)

字符串是不可变的。这意味着字符是只读的,试图设置它们实际上什么也没做:

 let str = "123";
 str[0] = "2";
 console.log(str); // "123"

要修改它们,您必须构建一个由先前字符串的字符组成的新字符串:

str = "2" + str.slice(1);