Title Case a Sentence

split.png
这道题的难点在于如何获取每个单词的首字母;思路是:
1、将句子用 split() 转为数组;
2、遍历数组每一项,获取每项单词的首字母,将首字母改为大写;
3、最后用join(“”) 方法,将数组还原成句子;

还是先用for 循环来实现效果:

  1. function titleCase(str) {
  2. // 将句子转为数组
  3. var a = str.toLowerCase().split(" ");
  4. for(var i = 0; i < a.length; i++){
  5. a[i] = a[i].charAt(0).toUpperCase() + a[i].slice(1);
  6. }
  7. return a.join(" ");
  8. }
  9. titleCase("I'm a little tea pot");


还有两种用map()来实现的,代码如下:

function titleCase(str) {
  var a = str.toLowerCase().split(" ");
  return a.map(function(b){
    return b.replace(b[0],b[0].toUpperCase());
  }).join(" ");
}

可以简写为:

function titleCase(str) {

    //str.toLowerCase().split(" ") 将句子转为数组,map()返回一个回调函数
  return str.toLowerCase().split(" ").map(function(b){

  //replace(m,n) 方法将字母替换为大写
    return b.replace(b[0],b[0].toUpperCase());

  }).join(" ");        //最后用join(" ")拼接
}

还有一种map()方法实现:

function titleCase(str) {
  var a = str.toLowerCase().split(" ").map(function(b){
  //这里是用字符串拼接的方式
    return (b[0].toString().toUpperCase() + b.slice(1));
  }).join(" ");
  return a;
}

仔细对比这三种写法,还是使用map方法的回调函数书写的更为简洁;

版权声明:本文为博主原创文章,转载请附上原文出处链接和本声明。