function test(str){
return str.replace(/\b[\w\']+\b/g,function(match){
return match.toLowerCase().replace(/^./,function(match){
return match.toUpperCase();
});
});
}
[
"I'm a little tea pot",
"sHoRt AnD sToUt",
"HERE IS MY HANDLE HERE IS MY SPOUT"
].forEach(function(str){
console.log(test(str))
})
var arr=["I'm a little tea pot","sHoRt AnD sToUt","HERE IS MY HANDLE HERE IS MY SPOUT"];
function TransformCase(str){
return str.replace(/\b\w+\b/g, function(word){
return word.substring(0,1).toUpperCase()+word.substring(1).toLowerCase();}
);
}
arr.forEach(function(str){
console.log(TransformCase(str))
})
作业应该自己做。
不过可以提示一下,个人以为用字符串的replace方法配合正则表达式最简单。
一行搞定,简洁明了
没太理解问题,按照我的理解,我觉得应该这样做
先全部转换成小写字母
空格分隔
将每个单词的首字母换成大写
用空格拼起来,return
第一种情况“should return a string”没太明白
titleCase 改成类似下面这样试试看是否符合要求:
第一个加上.join("")变成一个字符串,后三个都是加上.join(" ").replace(/b(w)|s(w)/g,function(m){return m.toUpperCase()}),楼主看看好用不
codewar?直接解锁答案不就行了
起初我也是想通过split, join实现的,可是这么做需不需要考虑到各个单词之间的空格数量呢,所以去匹配每个单词是更合理的。以前我也不知道这么做,算是学习到了。
想起了以前刚学c语言的时候,可是一个字符一个字符遍历的,哈哈,虽然这个方法笨,可是肯定能实现。