我找到了一种使字符串的每个首字母变为大写https://stackoverflow.com/a/32589289/12786226的代码的解决方案。但是对我来说,这不是最简单的版本。是否有更简单的方法可以重写它?
让我尝试为您解释代码。
function titleCase(str) {
var splitStr = str.toLowerCase().split(' ');
for (var i = 0; i < splitStr.length; i++) {
splitStr[i] = splitStr[i].charAt(0).toUpperCase() + splitStr[i].substring(1);
}
return splitStr.join(' ');
}
document.write(titleCase("I'm a little tea pot"));
假设我们有一个句子“ javascript很酷”,我们想将其大写。
因此,我们首先声明变量splitStr。这是句子中每个单词的数组。通过以空格将字符串“分割”来获得此数组。结果,在我们的例子中,splitStr是[“ javascript”,“ is”,“ cool”]。
现在,我们进入此for循环,该循环遍历splitStr中的每个元素。对于splitStr中的每个元素,循环都用一个单词替换该元素,该单词通过将数组中相应单词的大写第一个字母串联在一起,然后依次连接其余单词而形成。例如:
javascript = J +头像= Javascript
这种情况发生在数组中的每个单词上。最后,数组现在包含:[“ Javascript”,“ Is”,“ Cool”]。
在每一端,我们将数组连接在一起,并用空格分隔每个元素,从而产生字符串“ Javascript Is Cool”。
我刚刚在网上搜索,找到了一个对您的问题here的简单答案。
但是让我向您解释这里发生了什么。
function capitalizeFirstLetter(string) {
return string.charAt(0).toUpperCase() + string.slice(1);
}
在上面的函数中,我们获得了一个占位符,命名为string
,该参数将是我们想要通过首字母大写的字符串,就像您提供的示例i'm a little tea pot
。
[capitalizeFirstLetter
函数将像在括号内的capitalizeFirstLetter("i'm a little tea pot")
一样被调用。我们定义的函数将返回首字母大写的确切字符串,但是那里发生了什么?
我们得到了一个像string.charAt(0).toUpperCase() + string.slice(1);
这样的返回值,字符串将与函数调用发送的参数相同。因此将是"i'm a little tea pot".charAt(0).toUpperCase() + "i'm a little tea pot".slice(1)
,这里有功能的两个部分,第一个是"i'm a little tea pot".charAt(0).toUpperCase()
,第二个是"i'm a little tea pot".slice(1)
,这里的+
运算符将把我们的两个功能结合在一起。
我们每个功能的输出如下:
第一个: charAt()
函数是prototype
属性中可用的函数之一,我们可以在其中存储我们的方法和其他一些功能。如果您想进一步了解prototype
的工作方式,请阅读this。因此它将返回字符串的第一个索引,即i
中的i'm a little tea pot
,在下面,我们得到了另一个名为toUpperCase()
的函数,这也是prototype
中可用的函数。它将以大写形式返回每个给定的字符串,因此我们第一个功能的输出将为I
。
第二个: slice()
函数也与上面相同,它将返回一个带有给定索引的新字符串,因此其输出将为'm a little tea pot
。
注意:charAt
和slice
索引不同,因此我们必须将0传递给第一个索引,并将1传递给第二个索引。
因此,整个功能的输出将为I
+ 'm a little tea pot
,实际结果将为I'm a little tea pot
。