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

例如,当输入是“我是一个小茶壶”时,我期望“我是一个小茶壶”是输出。然而,该函数返回“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 cap = (str) => { Let arr = str.split(' '); 加勒比海盗。forEach(函数(项,索引){ Arr [index] = item。替换(项目[0],[0].toUpperCase ()); }); 加勒比海盗。加入(' '); }; console.log(cap(“我是一个小茶壶”));

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

其他回答

用奇数分隔符将字符串中的每个单词大写(不使用正则表达式的快速解决方案)

function capitalizeFirstLetter(str) {
  function isLetter(char) {
    const code = char.charCodeAt(0);
    // Considering apostrophe (char code 39) as a letter
    return code > 64 && code < 91 || code > 96 && code < 123 || char.charCodeAt(0) === 39;
  }

  str = str.toLowerCase();

  let newStr = '';
  let processingWord = false;

  for (let i = 0; i < str.length; i += 1) {
    if (!processingWord && isLetter(str[i])) {
      processingWord = true;
      newStr += str[i].toUpperCase();
    }
    else {
      newStr += str[i];
    }

    if (processingWord && !isLetter(str[i])) {
      processingWord = false;
    }
  }

  return newStr;
}

// stack overflow -> Stack Overflow
// ping-pong -> Ping-Pong
// domino's pizza -> Domino's Pizza
// /some/path -> /Some/Path

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

.capitalize {
    text-transform: capitalize;
}

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

 document.getElementById("element").className = "capitalize";
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"

这是一个使用现代javascript实践来提高可读性的完美例子。还没有看到一个减少版本在这里,但这是我使用的。这既是一个咖喱单行和非常可读

sentence
    .trim().toLowerCase()
    .split(' ')
    .reduce((sentence, word) => `${sentence} ${word[0].toUpperCase()}${word.substring(1)}`, '')
    .trim()

这里我使用了三个函数toLowerCase(), toUpperCase()和replace(regex,replacer)

function titleCase(str) { 
     return str.toLowerCase().replace(/^(\w)|\s(\w)/g, (grp) => grp.toUpperCase()); 
}

titleCase(“我是一个小茶壶”);