-
Notifications
You must be signed in to change notification settings - Fork 281
Title Case a Sentence
Title Case a Sentence 的中文意思大致为:让句子中每个单词首字母大写,其它字母小写。
此题非常有意思,考查的知识点有:
1、String.split() // 把字符串切分成数组
2、String.toUpperCase() // 把字符串转化为大写
3、String.toLowerCase() // 把字符串转化为小写
注意:
1、js中只有字符串类型,并不像java语言一样还有字符类型。所以js中字符和字符串一样,都可以直接操作。
2、js中万物皆对象,字符串也是对象,所以它才会具有对应的length属性和toUpperCase方法。
3、字符串和数组非常类似,因为它们本质上都是序列,只是存储的值不同,数组存储的值更为丰富。
我们可以像操作数组一样来操作字符串:str.slice(0,1) | str[0]。
譬如首字母大写:word.charAt(0).toUpperCase()等同于 word[0].toUpperCase()。
假设需要转化的句子为:str = "sHoRt AnD sToUt"
1、把句子转化为数组:var arr = str.split(" ")
2、通过映射的方式来逐个访问单词:arr.map(function(word){})
3、分别取到单词的第一个字母和剩余的字母,并做大小写转化:return word.charAt(0).toUpperCase() + word.substring(1).toLowerCase()
4、map映射返回的是一个转化后的word组装成的新数组,并没有直接修改原数组,所以我们需要用 return arr.map()的方式来保存结果。
5、最后把新数组通过join的方式拼接成一个新字符串:newArr.join(" ");
第1步和第5步是互相对应的操作。
最终实现代码如下:
function titleCase(str) {
var arr = str.split(" ");
return arr.map(function(word){
return word.charAt(0).toUpperCase() + word.substring(1).toLowerCase();
}).join(" ");
}
titleCase("sHoRt AnD sToUt");
怎么样,思路搞清楚了,代码实现是不是很清晰,一看就懂。^_^
希望你能喜欢,欢迎给我提Issue啊。
非常感谢你能在万千GitHub项目中发现这里,如果你也喜欢这个项目,不要忘记给我们点赞(Star)哦。
如果想知道项目的每一步进展,可以关注(Watch)我们哦。
如果想贡献代码,提交PR,可以新建一个属于自己的分支(Fork)哦。
欢迎你来到freecodecamp中文社区。