6

我正在尝试制作一个javascript程序,它接受一个字符串,将每个单词的第一个字母大写,并将其他每个字符变为小写。

函数titleCase(str){str=str.toLowerCase();var数组=str.split(“”);对于(var i=0;i<数组长度;i++){array[i][0]=数组[i].charAt(0).toUpperCase();}var finalString=array.join(“”)return finalString;}log(titleCase(“我是一个小茶壶”);

出于某种原因数组[i].charAt(0).toUpperCase();不会将其价值传递给数组[i][0]。这最终使它返回的字符串只包含所有小写字母,而不是每个单词的第一个字母都大写。

1
  • 你不能像那样索引字符串数组[i][0]
    – 肖恩
    2015年9月23日21:00

3个答案

重置为默认值

JavaScript字符串是不可变的,因此实际上无法通过使用[]操作员。下面是一个使用子串要构建最终字符串,请执行以下操作:

现场演示:

函数titleCase(str){str=str.toLowerCase();var数组=str.split(“”);对于(var i=0;i<数组长度;i++){array[i]=数组[i].charAt(0).toUpperCase()+数组[i].substring(1);}var finalString=array.join(“”)return finalString;}alert(titleCase(“我是一个小茶壶”);

JSFiddle版本:https://jsfiddle.net/rakdtpbb/

听起来你想做更多这样的事情:

函数titleCase(str){str=str.toLowerCase();var数组=str.split(“”);对于(var i=0;i<数组长度;i++){//数组[i]是一个不可变的字符串。所以我们需要重新构建它。array[i]=数组[i].charAt(0).toUpperCase()+数组[i].substring(1);}var finalString=array.join(“”)return finalString;}titleCase(“我是一个小茶壶”);

可以使用括号表示法读取为字符数组。但是,您不能以这种方式更改特定的字符,因为字符串不是可变对象。

0

这个至UpperCase()方法返回转换为大写的字符串的值,但不影响字符串本身的值。

1
  • 谢谢你解决了我的问题。我不知道你不能索引单个字符。 2015年9月25日1:28

不是你想要的答案吗?浏览标记的其他问题问你自己的问题