需求
给出一字符串,返回子字符首字符大写的字符串
titleCase("I'm a little tea pot") should return "I'm A Little Tea Pot".
思路1
字符串小写后切割为数组
for循环操作数组元素的首字符
拼接字符
function titleCase(str) {
var newArr = str.toLowerCase().split(' ');
for(var i=0; i<newArr.length ; i++) {
newArr[i] = newArr[i].replace(newArr[i][0],newArr[i][0].toUpperCase());
}
return newArr.join(" ");
}
titleCase("I'm a little tea pot");
思路2
字符串小写后切割为数组
利用map方法对数组元素统一风格化
function titleCase(str) {
var newArr = str.toLowerCase().split(" ");
newArr = newArr.map(function(val) {
return val.replace(val[0],val[0].toUpperCase);
});
return newArr.join(" ");
}
titleCase("I'm a little tea pot");
思路三
直接对字符串小写化,replace操作
function titleCase(str) {
return str.toLowerCase().replace(/(^|\s)\S/g, (val) => val.toUpperCase());
}
titleCase("I'm a little tea pot");
总结
三种思路其实都是先转化为小写字符,再通过str.replace()替换匹配项
相关
str.split()
匹配separation来分割字符串,返回新数组,不改变原数组
str.replace(regexp|substr, newSubstr|function)
regexp (pattern)
一个 RegExp 对象或者其字面量。该正则所匹配的内容会被第二个参数的返回值替换掉。substr (pattern)
一个要被 newSubStr 替换的字符串。其被视为一整个字符串,而不是一个正则表达式。仅仅是第一个匹配会被替换。newSubStr (replacement)
用于替换掉第一个参数在原字符串中的匹配部分的 字符串。该字符串中可以内插一些特殊的变量名。参考下面的使用字符串作为参数。function (replacement)
一个用来创建新子字符串的函数,该函数的返回值将替换掉第一个参数匹配到的结果。参考下面的指定一个函数作为参数。返回值
一个部分或全部匹配由替代模式所取代的新的字符串。
有其他好的方法或思路的道友,不妨在沙发区神交一番。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。