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

例如,当输入是“我是一个小茶壶”时,我期望“我是一个小茶壶”是输出。然而,该函数返回“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”));


当前回答

ES6让

const captilizeAllWords = (sentence) => {
  if (typeof sentence !== "string") return sentence;
  return sentence.split(' ')
    .map(word => word.charAt(0).toUpperCase() + word.slice(1))
    .join(' ');
}


captilizeAllWords('Something is going on here')

其他回答

你把复杂变得很简单了。你可以在你的CSS中添加这个:

.capitalize {
    text-transform: capitalize;
}

在JavaScript中,可以将类添加到元素中

 document.getElementById("element").className = "capitalize";

如果您可以使用第三方库,那么Lodash为您提供了一个帮助函数。

https://lodash.com/docs/4.17.3#startCase

_。startCase (foo栏); // => 'Foo Bar' _.startCase(“——foo bar”); // => 'Foo Bar' _.startCase(“fooBar”); // => 'Foo Bar' _.startCase(“__FOO_BAR__”); // => ' foo bar ' < script src = " https://cdn.jsdelivr.net/lodash/4.17.3/lodash.min.js " > < /脚本>

出于可读性考虑,我通常不喜欢使用regexp,而且我也尽量避免使用循环。我认为这是有可读性的。

function capitalizeFirstLetter(string) {
    return string && string.charAt(0).toUpperCase() + string.substring(1);
};
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"

或者可以使用replace(),将每个单词的第一个字母替换为“大写”。

function titleCase(str) {
    return str.toLowerCase().split(' ').map(function(word) {
               return word.replace(word[0], word[0].toUpperCase());
           }).join(' ');
}

titleCase("I'm a little tea pot");