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