繁体   English   中英

每个单词的首字母大写

[英]Capitalizing the first letter of every word

由于某种原因“我是一个小茶壶”会返回“我是一个小茶壶”。 我希望它是“我是小茶壶”。 我可以使用.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");

希望这可以帮助

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

大声朗读这行

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

“从数组str获取单词编号i ,取其第一个字符,将其转换为大写,然后将其分配给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(" ");

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

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

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

应该

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

除了将><混合使用之外,因为要在循环中重新分配str的值,所以您不会迭代原始数组中的所有单词,并且调用str.join()尝试将失败。 您需要将更正的单词存储在其他变量中,并且需要在第一个大写字母之后添加其余字符。

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

 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(" "); } 
 <!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> 

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM