我尝试将字符串的第一个字母大写,即“hello world”参数应该返回“Hello World”。我一直收到一个空字符串,我认为if语句有一些基本的语法错误,我无法弄清楚。代码:
function LetterCapitalize(str) {
var output = " "
for(var i=0; i < str.length; i++);
if(str.charAt(i - 1) == " ") {
str.charAt(i).toUpperCase;
output += str.charAt(i);
} else {
output += str.charAt(i);
}
return output
}
LetterCapitalize("hello world")
答案 0 :(得分:1)
试试这个:
function LetterCapitalize(str) {
var output = ""+str.charAt(0).toUpperCase();
for(var i=1; i < str.length; i++){
if(str.charAt(i - 1) == " ") {
output += str.charAt(i).toUpperCase();
} else {
output += str.charAt(i);
}
}
return output;
}
console.log(LetterCapitalize("hello world"))
<强>解释强>:
答案 1 :(得分:1)
看来您的主要问题是第4行的for循环缺少一个开括号。
工作代码:
function letterCapitalize(string) {
var output = " ";
var newWord = true;
for(var i = 0; i < string.length; i ++){
if(newWord){
newWord = false;
output += string[i].toUpperCase();
} else output += string[i];
if(string[i] === " ")newWord = true;
}
return output;
}
console.log(letterCapitalize("hello world!"));
答案 2 :(得分:1)
其他人已经提供了正确的解决方案,但这里有一些要点:
确保正确缩进代码,这使得阅读和调试变得更加容易。
您需要使用括号调用toUpperCase函数,即string.charAt(i).toUpperCase()
toUpperCase方法不会修改字符串本身,因此当您调用output + = str.charAt(i)时,您将添加原始的小写字母,而不是大写字母。你可以看到其他解决方案有行:output + = str.charAt(i).toUpperCase()
答案 3 :(得分:0)
我一直收到一个空字符串,我认为if语句有一些基本的语法错误,我无法弄清楚?
不是使用if语句,而是使用for-loop本身:
for(var i=0; i < str.length; i++);
// ^
这个分号意味着循环体中只有一个空语句,if语句在循环之后放置(你的缩进实际上与此匹配)。
使用此功能(修复了其他一些问题,例如调用toUpperCase()
和字符串开头):
function letterCapitalize(str) {
var output = "";
for (var i=0; i<str.length; i++)
if (i == 0 || str.charAt(i-1) == " ")
output += str.charAt(i).toUpperCase();
else
output += str.charAt(i);
return output;
}
letterCapitalize("hello world"); // "Hello World"
答案 4 :(得分:0)
function LetterCapitalize(str) {
var output = "";
for (var i = 0; i < str.length; i++) {
if (i === 0) {
output += str.charAt(i).toUpperCase();
} else {
output += str.charAt(i);
}
}
return output;
};
console.log(LetterCapitalize("hello world"))