首页 > 这道题应该如何做?

这道题应该如何做?

用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(" ");
}

没太理解问题,按照我的理解,我觉得应该这样做

  1. 先全部转换成小写字母

  2. 空格分隔

  3. 将每个单词的首字母换成大写

  4. 用空格拼起来,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))
})
【热门文章】
【热门文章】