将每个单词的第一个字母大写

时间:2017-04-12 15:26:21

标签: javascript

由于某种原因“我是一个小茶壶”回归“我是  一个小茶壶“。我希望它是”我是一个小茶壶“。我能够使用.toLowerCase()使字符串全部小写,但我的代码由于某种原因将不会大写第一个字母每个字。任何人都知道为什么?

function titleCase(str) {
    str = str.toLowerCase().split(" ");

    for (i = 0; i > str.length; i++){
        str = str[i].charAt(0).toUpperCase();
    }

    return str.join(" ");
}

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

7 个答案:

答案 0 :(得分:1)

希望这有帮助

function titleCase(str) {
  var str_arr = str.toLowerCase().split(" ");
  for (i = 0; i < str_arr.length; i++){
    str_arr[i] = str_arr[i].charAt(0).toUpperCase()+(str_arr[i].substr(1));
  }
  return str_arr.join(" ");
}
titleCase("I'm a little tea pot");

答案 1 :(得分:1)

大声读这条线

str = str[i].charAt(0).toUpperCase()

“从数组i中取词str,取其第一个字符,将其转换为大写并将其指定给str”。最后一部分将覆盖数组str

此外你的条件错了

试试这个

var words = [];
for(i=0; i < str.length; i++) {
   words[i] = str[i];
   words[i] = words[i].charAt(0).toUpperCase() + words[i].substring(1);
}
return words.join(" ");

答案 2 :(得分:1)

var str = "i'm a little tea pot";

function titleCaseChange(s)
{
    return s.replace(/\w\S*/g, function(t){
      return t.charAt(0).toUpperCase() + t.substr(1).toLowerCase();
    });
}
var res = titleCaseChange(str);
console.log(res);

答案 3 :(得分:0)

代码永远不会进入你的内循环。

for (i = 0; i > str.length; i++)

应该是

for (i = 0; i < str.length; i++)

答案 4 :(得分:0)

除了与><混淆之外,由于您在循环中重新分配str的值,因此您不会迭代原始数组中的所有单词并且尝试呼叫str.join()将失败。您需要将更正后的单词存储在不同的变量中,并且在第一个单词大写后,您需要添加剩余的单词。

&#13;
&#13;
function titleCase(str) {
    var strArry = str.toLowerCase().split(" ");
    var strTemp = [];  // Adjusted strings will go here

    for (i = 0; i < strArry.length; i++){
        // Capitalized the first letter of the word and add the remaining letters of the word
        // Then, add the corrected word to the new array
        strTemp.push(strArry[i].charAt(0).toUpperCase() + strArry[i].substr(1,strArry[i].length));
    }

    // Put spaces between the array elements
    return strTemp.join(" ");
}

console.log(titleCase("I'm a little tea pot"));
&#13;
&#13;
&#13;

答案 5 :(得分:0)

&#13;
&#13;
titleCase= function(inputString){
inputString = inputString.toLowerCase().split(" ");
var finalString = [];
for(i=0; i < inputString.length; i++) {
   finalString[i] = inputString[i];
   finalString[i] = finalString[i].charAt(0).toUpperCase() + finalString[i].substring(1);
}
return finalString.join(" ");
}
&#13;
<!DOCTYPE html>
<html>
<body>

<button type="button"
onclick="document.getElementById('demo').innerHTML = titleCase('hello world, weather is awesome!!')"> titleCase('hello world, weather is awesome!!')</button>

<p id="demo"></p>

</body>
</html> 
&#13;
&#13;
&#13;

答案 6 :(得分:0)

for循环是一种代码味道:)

const capWord = word => word ? word.slice(0, 1).toUpperCase() + word.slice(1) : '';
const capSentence = sentence => sentence.split(/\s+/).map(capWord).join(' ');
const result = capSentence('the quick brown fox jumped over the lazy dog');

console.log(result);