我正在通过freeCodeCamp并坚持他们的基本算法脚本:标题案例句子"挑战。我的代码似乎输出正确,但freeCodeCamp没有传递给我。如果您对问题的原因有任何帮助或见解,我们将不胜感激!
以下是他们的指示:
这是我的解决方案:
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;
我的输出显示&#34;我是一个小茶壶&#34;,这是指示所要求的。指令要求我正确测试所有输出的其他输入......
答案 0 :(得分:0)
试试这个。
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;
答案 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");
祝你好运!谢谢:)