freeCodeCamp Title使用JavaScript的句子

时间:2018-03-14 23:56:34

标签: javascript

我正在通过freeCodeCamp并坚持他们的基本算法脚本:标题案例句子"挑战。我的代码似乎输出正确,但freeCodeCamp没有传递给我。如果您对问题的原因有任何帮助或见解,我们将不胜感激!

以下是他们的指示:

  • 返回提供的字符串,每个单词的首字母大写。确保单词的其余部分为小写。
  • 出于本练习的目的,您还应该大写连接词,例如"" ""。
  • titleCase("我是一个小茶壶")应该返回一个字符串。
  • titleCase("我是一个小茶壶")应该返回"我是一个小茶壶"。
  • titleCase(" sHoRt AnD sToUt")应该返回" Short&Stout"。
  • titleCase("这里是我的手柄,这是我的责任")应该返回"这里我的处理是我的鲸鱼喷水"。

这是我的解决方案:



function titleCase(str) {
  var strArray = str.split(' ');  // make string into an array
  var finalSentence = '';         // initialize variable for the final 'Title Cased' sentence
  
  // loop through each element in the array
  for (var i = 0; i < strArray.length; i++) {
    
    // get the length of each array element
    var strLength = strArray[i].length;
    
    // convert first letters of each word to upper-case
    finalSentence += strArray[i].charAt(0).toUpperCase() + 
      // convert remaining letters of each word to lower-case
      strArray[i].substring(1,strLength).toLowerCase() +
      // add space between words
      " ";
  }
  
  return finalSentence;
}

// string to test
titleCase("I'm a little tea pot");
&#13;
&#13;
&#13;

我的输出显示&#34;我是一个小茶壶&#34;,这是指示所要求的。指令要求我正确测试所有输出的其他输入......

2 个答案:

答案 0 :(得分:0)

试试这个。

&#13;
&#13;
function titleCase(str) {
   var ret = "";
   var upperCase = true;
   for (var i = 0; i < str.length; i++) {
    var chr = str.charAt(i);
    if(upperCase) {
      ret += chr.toUpperCase();
    }
    else{
      ret += chr.toLowerCase();
    }
    upperCase = chr == " ";
  }
  console.log(ret);
}
titleCase("I'm a little tea pot");
titleCase("sHoRt AnD sToUt");
titleCase("HERE IS MY HANDLE HERE IS MY SPOUT"); 
&#13;
&#13;
&#13;

答案 1 :(得分:0)

首先,我解释您的代码出了什么问题

在您的代码中,

finalSentence += strArray[i].charAt(0).toUpperCase() + strArray[i].substring(1,strLength).toLowerCase() + " ";

最后,您添加“”以在单词之间添加空格。因此,在每个单词之后,它将添加“”。因此,您可以获得titleCase("I'm a little tea pot");的输出 像这样,“我是一个小茶壶”,而不是“我是一个小茶壶”。请参见,您的编码输出中还有一个额外的“”(空格)。

您可以这样添加“”,

finalSentence += strArray[i].charAt(0).toUpperCase() + strArray[i].substring(1,strLength).toLowerCase();

    if(i < strArray.length - 1){
      finalSentence += " ";
    }

这是应对挑战的另一种简便方法,

function titleCase(str) {
    let strArr = str.toLowerCase().split(' ');
      for (var i = 0; i < strArr.length; i++) {
          strArr[i] = strArr[i].charAt(0).toUpperCase() + strArr[i].slice(1);
      }
      return strArr.join(' ');
}

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

祝你好运!谢谢:)