0

这里的函数假设每个单词的开头都大写。我知道还有其他更简单的解决方案,但我对为什么这个不能正常工作有点固执。每次我回来后,它都会添加一个“未定义”。

function LetterCapitalize(str) { 

  var c = str[0].charCodeAt(0);
  var letter;
  var result = "";

  if( (c >= "a".charCodeAt(0) && c <="z".charCodeAt(0)) || (c >= "A".charCodeAt(0) && c <="Z".charCodeAt(0)))
  {
    result = str[0].toUpperCase()
  }
  else
  {
    result += str[i];
  }

  for(var i=1; i<=str.length; i++)
  {
        if(str[i-1] == " ")
        {
            letter = str[i].toUpperCase()
            result += letter;
        }
        else
        {
            result += str[i];
        }
  }
       return result; 
}
4

1 回答 1

0

如果你改变

for(var i = 1; i <= str.length; i++)

for(var i = 1; i < str.length; i++)

它会按您的预期工作。就目前而言,您将额外一次索引到字符串中,这将返回未定义。

也可以完全放弃第一个 if/else 语句。else 语句无论如何都会是一个语法错误i is undefined

于 2013-08-14T21:43:26.273 回答