Skip to content

Title Case a Sentence

huluoyang edited this page Aug 30, 2016 · 2 revisions

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啊。

Clone this wiki locally