for循环内部If语句的JavaScript正确语法

JavaScript Proper Syntax for If Statement Inside For Loop

本文关键字:JavaScript 语法 语句 循环 内部 If for      更新时间:2024-01-25

我尝试将字符串的第一个字母大写,即"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")                      

试试这个:

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

解释

  • 第一个字符已转换为大写(前面没有空格)
  • 当字符前面有空格时,它将转换为大写。除此之外,它保持不变

您的主要问题似乎是第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!"));

其他人已经提供了正确的解决方案,但这里有几点很重要:

  1. 确保正确缩进代码,这样可以更容易地阅读和调试代码。

  2. 您需要使用括号调用toUpperCase函数,也称为string.charAt(i).toUpperCase()

  3. toUpperCase方法不会修改字符串本身,因此当您调用output+=str.charAt(i)时,您添加的是原始的小写字母,而不是大写字母。你可以看到其他解决方案有这样一行:output+=str.charAt(i).toUpperCase()

我一直得到一个空白字符串的返回,我想if语句有一些基本的语法错误,我搞不清楚?

不是使用if语句,而是使用for循环本身:

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