Title Case a Sentence
这道题的难点在于如何获取每个单词的首字母;思路是:
1、将句子用 split() 转为数组;
2、遍历数组每一项,获取每项单词的首字母,将首字母改为大写;
3、最后用join(“”) 方法,将数组还原成句子;
还是先用for 循环来实现效果:
function titleCase(str) {
// 将句子转为数组
var a = str.toLowerCase().split(" ");
for(var i = 0; i < a.length; i++){
a[i] = a[i].charAt(0).toUpperCase() + a[i].slice(1);
}
return a.join(" ");
}
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方法的回调函数书写的更为简洁;
版权声明:本文为博主原创文章,转载请附上原文出处链接和本声明。