将字符串中的每个第一个字符转换为大写

问题描述 投票:0回答:2

我找到了一种使字符串的每个首字母变为大写https://stackoverflow.com/a/32589289/12786226的代码的解决方案。但是对我来说,这不是最简单的版本。是否有更简单的方法可以重写它?

uppercase
2个回答
1
投票

让我尝试为您解释代码。

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”。


0
投票

我刚刚在网上搜索,找到了一个对您的问题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

注意:charAtslice索引不同,因此我们必须将0传递给第一个索引,并将1传递给第二个索引。

因此,整个功能的输出将为I + 'm a little tea pot,实际结果将为I'm a little tea pot

© www.soinside.com 2019 - 2024. All rights reserved.