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

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


当前回答

有很多方法可以实现这一点,例如,你可以尝试遍历字符串,或使用JavaScript内置的split(), map()和join()

我更喜欢使用正则表达式与替换方法,这是可用的字符串

capitalize = (str) =>  {
  return str.replace(/\b[a-z]/g, (letter) => letter.toUpperCase(););
}

使用\b边界匹治程序和[a-z]字符类标识,并使用回调函数将其替换为字母的大写版本。 更高效的 因为它只在字符串中的字符上迭代一次,并且它使用正则表达式来标识要大写的字母,这通常比使用循环和字符串操作实现相同的逻辑更快。

其他回答

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";

如果可行,请使用text-transform: capitalize;CSS属性将文本转换为标题大小写。

如果您可以同样依赖CSS来实现相同的结果,那么与JavaScript选项相比,这种操作成本更低。

《我是一个小茶壶》是以下片段的结果。

<p style="text-transform: capitalize;">I'm a little tea pot</p>

你可以使用现代的JS语法,这可以让你的生活更容易。以下是我针对给定问题的代码片段:

const capitalizeString = string =>字符串(' ')。map(item => item.replace(item. charat (0), item. charat (0). touppercase())))。加入(' '); capitalizeString('你好!我是aditya shrivastwa')

TypeScript肥箭头FTW

export const formatTitleCase = (string: string) =>
    string
        .toLowerCase()
        .split(" ")
        .map((word) => word.charAt(0).toUpperCase() + word.substring(1))
        .join(" ");