0
function LetterCapitalize(str) { 
  return str.charAt(0).toUpperCase()+ str.slice(1);
  var spaceIndex=str.indexOf(' ');
  var first=str.substring(0,spaceIndex);
  var second=str.substring(spaceIndex+1,str.length)

  return LetterCapitalize(first)+" " + LetterCapitalize(second)
}
console.log(LetterCapitalize("hello world"))

不知道我做错了什么,但只有 H in hello 是大写的

4

5 回答 5

1

当你的函数被调用时,它做的第一件事是:

return str.charAt(0).toUpperCase()+ str.slice(1);

这将返回转换为大写的字符串的第一个字符,加上从索引 1 开始的字符串的其余部分(原样)。

由于函数从那里返回,因此函数中没有其他内容正在执行

怎么样:

function LetterCapitalize(str) { 
    var words = str.split(' '); // create an array of each word
    for(var i = 0; i < words.length; i++) // Loop through each word
        words[i] = words[i].charAt(0).toUpperCase() + words[i].slice(1); // capitalize first character of each word

    return words.join(' '); // join the array back into a string
}

此外,如果您只是为了显示目的而尝试这样做,您可以使用 CSS:text-transform: capitalize;

于 2013-09-06T20:51:25.623 回答
1

看到函数的第一行代码了吗?

它退出您的函数(返回),并且该函数中的任何其他代码都不会执行。就 javascript 解释器而言,您的代码也可能是:

function LetterCapitalize(str) { 
    return str.charAt(0).toUpperCase()+ str.slice(1);
}

因此:Hello world

于 2013-09-06T20:52:17.050 回答
0

这个功能:

function LetterCapitalize(str) { 
    return str.charAt(0).toUpperCase()+ str.slice(1);
    var spaceIndex=str.indexOf(' ');
    var first=str.substring(0,spaceIndex);
    var second=str.substring(spaceIndex+1,str.length)

    return LetterCapitalize(first)+" " + LetterCapitalize(second)
}

逻辑上等价于这个函数:

function LetterCapitalize(str) { 
    return str.charAt(0).toUpperCase()+ str.slice(1);
}

一旦您return离开该功能,该功能就不会发生任何其他事情。你已经返回了一个值,所以它完成了。在这种情况下,您返回的值是单个大写字符加上字符串的其余部分。您在字符串中查找第二个单词的进一步尝试永远不会被执行。

于 2013-09-06T20:52:14.833 回答
0

如果您可以使用 CSS,则非常简单:

  <style type="text/css">
    h1.uppercase { text-transform: capitalize}
    </style>
    <h1 class="uppercase">Uppercase or lowercase?</h1>
   Output :** Uppercase Or Lowercase **

那是你要找的吗?

于 2013-09-06T20:52:32.653 回答
0

这是对 Mike Christensen 上面非常干净简洁的代码的简单调整,他写了这个答案(除了一个之外,这恰好与我的相同):

函数字母大写(str){

var words = str.split(' '); // create an array of each word
for(var i = 0; i < words.length; i++) // Loop through each word
    words[i] = words[i].charAt(0).toUpperCase() + words[i].slice(1); // capitalize first character of each word

return words.join(' '); // join the array back into a string

}

编辑: words[i].charAt(0).toUpperCase() #=> words[i][0].toUpperCase()

我仅包含此版本以帮助其他人了解调用所需字符的不同方法,并可能有助于进一步了解代码中究竟发生了什么。我知道这对我有帮助。

于 2014-01-18T11:21:11.927 回答