我试图写一个函数,大写字符串中每个单词的第一个字母(将字符串转换为标题情况)。

例如,当输入是“我是一个小茶壶”时,我期望“我是一个小茶壶”是输出。然而,该函数返回“i'm a little tea pot”。

这是我的代码:

函数标题案例(str) { var splitStr = str.toLowerCase().split(“ ”); for (var i = 0; i < splitStr.length; i++) { if (splitStr.length[i] < splitStr.length) { splitStr[i].charAt(0).toUpperCase(); } str = splitStr.join(“ ”); } 返回 str; } console.log(titleCase(“I'm a Little Teapot”));


当前回答

let string = "I'm a little tea pot";

现在,创建一个以字符串作为参数的函数。

function titleCase(str) {
   return str.split(" ").map(s => s.charAt(0).toUpperCase() + s.substr(1).toLowerCase()).join(" ")
} 

输出

titleCase(string); // "I'm A Little Tea Pot"

其他回答

也是一个很好的选择(特别是如果你使用freeCodeCamp):

function titleCase(str) {
  var wordsArray = str.toLowerCase().split(/\s+/);
  var upperCased = wordsArray.map(function(word) {
    return word.charAt(0).toUpperCase() + word.substr(1);
  });
  return upperCased.join(" ");
}

在ECMAScript 6中,使用箭头函数的一行回答:

const captialize = words => words.split(' ').map( w =>  w.substring(0,1).toUpperCase()+ w.substring(1)).join(' ')

@somethingthere有一个更紧凑(和现代)的重写方案:

let titleCase = (str => str. tolowercase()。(' ') . map(分裂 c => c. charat (0). touppercase () + c.substring(1))。加入(' ')); 文档。write(titleCase(“我是一个更小的茶壶”));

ECMAScript 6版本:

title
    .split(/ /g).map(word =>
        `${word.substring(0,1).toUpperCase()}${word.substring(1)}`)
    .join(" ");

Let cap = (str) => { Let arr = str.split(' '); 加勒比海盗。forEach(函数(项,索引){ Arr [index] = item。替换(项目[0],[0].toUpperCase ()); }); 加勒比海盗。加入(' '); }; console.log(cap(“我是一个小茶壶”));

快速可读版本参见基准http://jsben.ch/k3JVz