【问题标题】:如何在 JavaScript 中使字符串的第一个字母大写?
【发布时间】:2010-11-04 19:02:40
【问题描述】:

如何使字符串的第一个字母大写,但不改变任何其他字母的大小写?

例如:

  • "this is a test" → "This is a test"
  • "the Eiffel Tower" → "The Eiffel Tower"
  • "/index.html" → "/index.html"

【问题讨论】:

  • Underscore 有一个名为 underscore.string 的插件,其中包括这个插件和许多其他很棒的工具。
  • 更简单:string[0].toUpperCase() + string.substring(1)
  • `${s[0].toUpperCase()}${s.slice(1)}`
  • ([initial, ...rest]) => [initial.toUpperCase(), ...rest].join("")
  • 每个单词都大写:str.replace(/(^\w|\s\w)/g, m => m.toUpperCase())

标签: javascript string letter capitalize


【解决方案1】:

你应该这样做:

let text = "lower case";
text = text.charAt(0).toUpperCase() + text.substring(1, text.length);

【讨论】:

    【解决方案2】:

    这将容忍可能的前导空格,并且不会错过字符串中第一个字母的目标。因此,它可能会改进线程上已经很好的解决方案。

    str = "   the Eifel Tower";
    str.replace(/\w/, str.match(/\w/)[0].toUpperCase());
    >> "   The Eifel Tower";
    

    !但是,如果对空白字符串执行,将导致“软”错误。 为了避免这种可能的错误或对空白字符串或数字的不必要处理,可以使用三元条件保护:

    +str!=+str ?  str.replace(/\w/, str.match(/\w/)[0].toUpperCase()) : str;
    

    【讨论】:

    • 是 Eiffel 和两个“f”
    • 事实上,我的正则表达式有一个弱点,应该是:+str!=+str ? str.replace(/[a-z]/, str.match(/[a-z]/)[0].toUpperCase()) : str;,例如:str = "1.2 the Eiffel Tower"
    【解决方案3】:
    var a = "this is a test"
    console.log(a.replace(/^[a-z]/g, txt => txt.toUpperCase()));
    

    【讨论】:

      【解决方案4】:

      你可以这样做:

      mode =  "string";
      string = mode.charAt(0).toUpperCase() + mode.substr(1,mode.length).toLowerCase();
      console.log(string);
      

      这将打印出来

      String

      【讨论】:

        【解决方案5】:

        好吧,如果方法传递了一些意外类型的数据,例如Object 或function,所有答案都会崩溃。

        因此,为了确保它不会在任何情况下崩溃,我们需要检查类型。

        capitalizeFirstLetter = string => {
          if (typeof string == "string") {
              console.log("passed");
            return string.charAt(0).toUpperCase() + string.slice(1);
          } else {
            console.log("error");
            return string;
          }
        };
        
        //type function
        console.log(
          capitalizeFirstLetter(() => {
            return true;
          })
        );
        // error
        //  () => { return true; }
        
        //type object
        console.log(capitalizeFirstLetter({ x: 1 }));
        // error
        // Object { x: 1 }
        
        //type boolean
        console.log(capitalizeFirstLetter(true));
        // error
        // true
        
        //type undefined
        console.log(capitalizeFirstLetter(undefined));
        // error
        // undefined
        
        //type null
        console.log(capitalizeFirstLetter(null));
        // error
        // null
        
        //type NaN
        console.log(capitalizeFirstLetter(NaN));
        // error
        // NaN
        
        //type number
        console.log(capitalizeFirstLetter(2));
        // error
        // 2
        
        //type any for e.g. class
        class Jaydeep {}
        console.log(capitalizeFirstLetter(new Jaydeep()));
        // error
        // Object {}
        
        //type string
        console.log(capitalizeFirstLetter("1"));
        console.log(capitalizeFirstLetter("a"));
        console.log(capitalizeFirstLetter("@"));
        console.log(capitalizeFirstLetter(""));
        // 1
        // A
        // @
        //  :empty string

        【讨论】:

          【解决方案6】:
          string = string.replace(string.charAt(0), string.charAt(0).toUpperCase());
          

          【讨论】:

          • 这就是诀窍,为什么它在没有任何解释的情况下被否决了?
          【解决方案7】:

          使用这个 Node.js 模块,http://stringjs.com/ 包,将你的字符串大写:

          var S = require('string');
          S('jon').capitalize().s; //'Jon'
          S('JP').capitalize().s; //'Jp'
          

          【讨论】:

          • 所以你需要安装node和一个包来大写一个字符串。有点矫枉过正。
          【解决方案8】:

          试试下面的函数:

          function capitalize (string) {
            return [].map.call(string, (char, i) => i ? char : char.toUpperCase()).join('')
          }
          

          用法:

          capitalize('hello, world!')
          

          结果:

          Hello, world!
          

          【讨论】:

            【解决方案9】:

            试试这个代码:

            alert("hello".substr(0, 1).toUpperCase() + "hello".substr(1));
            

            它取“hello”中的第一个字符,将其大写并添加其余部分。

            【讨论】:

              【解决方案10】:

              如果您想将字符串中的每个首字母大写,例如 hello to the worldbecomes Hello To The World,您可以使用以下内容(改编自 Steve Harrison):

              function capitalizeEveryFirstLetter(string) {
                  var splitStr = string.split(' ')
                  var fullStr = '';
              
                  $.each(splitStr,function(index){
                      var currentSplit = splitStr[index].charAt(0).toUpperCase() + splitStr[index].slice(1);
                      fullStr += currentSplit + " "
                  });
              
                  return fullStr;
              }
              

              您可以通过以下方式调用:

              capitalizeFirstLetter("hello to the world");
              

              【讨论】:

                【解决方案11】:

                对于打字稿

                  capitalizeFirstLetter(string) {
                    return string.charAt(0).toUpperCase() + string.slice(1);
                  }
                

                【讨论】:

                  【解决方案12】:

                  您可以使用如下正则表达式:

                  return string1.toLowerCase().replace(/^[a-zA-z]|\s(.)/ig, L => L.toUpperCase());
                  

                  【讨论】:

                    【解决方案13】:

                    你可以使用正则表达式来解决它:

                    return str.toLowerCase().replace(/^[a-zA-z]|\s(.)/ig, L => L.toUpperCase());
                    

                    【讨论】:

                    • 好策略。不过,对代码进行了一些修复:我认为您的意思是 a-zA-Z 而不是 a-zA-z。但无论哪种情况,您的正则表达式中都有i 标志,所以您真的只需要a-z。但是您也不需要 i 标志,因为如果第一个字符 不是 小写,则无需对其执行任何替换。
                    【解决方案14】:

                    这是我使用的函数:

                    capitalCase(text: string = 'NA') {
                        return text
                          .trim()
                          .toLowerCase()
                          .replace(/\w\S*/g, (w) => w.replace(/^\w/, (c) => c.toUpperCase()));
                      }
                    
                    console.log('this cApitalize TEXt');
                    

                    【讨论】:

                    • 结果如何?问题是:“如何在 JavaScript 中使字符串的第一个字母大写?” 这似乎是大写每个单词。
                    【解决方案15】:

                    使字符串的首字母大写

                    第一个解决方案

                    “这是一个测试”→“这是一个测试”

                    var word = "this is a test"
                    word[0].toUpperCase();
                    

                    它会给出:“这是一个测试”

                    使字符串首字大写的第二种解决方案

                    “这是一个测试”→“这是一个测试”

                    function capitalize(str) {
                    
                        const word = [];
                    
                        for(let char of str.split(' ')){
                            word.push(char[0].toUpperCase() + char.slice(1))
                        }
                    
                        return word.join(' ');
                    
                    }
                    
                     capitalize("this is a test");
                    

                    它会给出:“这是一个测试”

                    【讨论】:

                    • 在 JS 中,字符串是不可变的。
                    【解决方案16】:
                    const capitalizeName = function (name) { 
                        const names = name.split(' '); 
                        const namesUpper = [];
                        for (const n of names) {  
                            namesUpper.push(n.replace(n[0], n[0].toUpperCase()));
                        } 
                        console.log(namesUpper.join(' '));
                     }; 
                    capitalizeName('the Eiffel Tower')
                    

                    【讨论】:

                      【解决方案17】:

                      将字符串中所有单词的首字母大写:

                      function capitalize(str) {
                        return str.split(' ').map(word => word.charAt(0).toUpperCase() + word.toLowerCase().slice(1)).join(' ');
                      }
                      

                      【讨论】:

                        【解决方案18】:

                        简单的解决方案:

                        const myName = 'jAhiD';
                        
                        const firstLetter = myName[0].toUpperCase();
                        
                        const otherLetter = myName.slice(1).toLowerCase();
                        
                        const myNameCapitialize = firstLetter.concat(otherLetter);
                        
                        console.log(myNameCapitialize);
                        

                        输出:贾希德

                        【讨论】:

                          【解决方案19】:

                          我尝试了不同的方法

                          function myFun(val) {
                           var combain='';
                            for (let i = 0; i < val.length; i++) {
                               combain  +=  val[i].charAt(0).toUpperCase() + val[i].substring(1, val[i].length)+'-';
                            }
                            return  combain.replaceAll('-',' ');
                          }
                          var str = 'sreehari_bsn_alli'.replaceAll('_', ' ');
                          str = str.split(' ');
                          
                          let op = myFun(str);
                          

                          console.log(op);

                          【讨论】:

                            【解决方案20】:

                            大写和取消大写字符串的第一个字符。

                            要包含的功能:

                            /** First Character uppercase */
                            function capitalize(str) {
                                return str.charAt(0).toUpperCase() + str.slice(1);
                            }
                            
                            /** First Character lowercase */
                            function uncapitalize(str) {
                                return str.charAt(0).toLowerCase() + str.slice(1);
                            }
                            

                            Example1“第一个字符大写”:

                            alert(capitalize("hello world"));
                            

                            结果:世界你好

                            示例 2“第一个字符小写”:

                            alert(uncapitalize("Hello World, today is sunny"));
                            

                            结果:你好世界,今天是晴天

                            【讨论】:

                              【解决方案21】:

                              当我们说大写时,意思是每个单词的第一个字母应该是大写的,后面的字符是小写的。

                              下面有两个函数,第一个函数将字符串的第一个字母变为大写,后面的变为小写。第二个函数将字符串转换为标题大小写,这意味着每个单词中的每个第一个字母都将大写

                              // Will make will first letter of a sentence or word uppercase
                              
                              function capital(word){
                                word = word.toLowerCase()
                                return word[0].toUpperCase() + word.substring(1);
                              }
                              
                              
                              // Will make first letter in each words capital
                              
                              function titleCase(title) {
                                title = title.toLowerCase();
                                const words = title.split(' ');
                                const titleCaseWords = words.map((word) => word[0].toUpperCase() + word.substring(1));
                                return titleCaseWords.join(' ');
                              }
                              
                              const title = titleCase('the QUICK brown fox') 
                              const caps = capital('the QUICK brown fox') 
                              
                              console.log(title); // The Quick Brown Fox
                              console.log(caps); // The quick brown fox

                              【讨论】:

                              • 不,这不是 OP 想要的。他们问:“我如何使字符串的第一个字母大写,但不改变任何其他字母的大小写”。 将字符串大写与将其设为标题大小写不同。 他们想要前者,而您正在做后者。请查看问题中的示例。
                              • @EricAya 是的,你说得对,所以我编辑了我的答案并添加了一个函数,它将字符串的第一个字母变成大写。
                              【解决方案22】:

                              简单易懂:

                              // 好的,同意,这里是编辑后的版本。我不能再简单了。

                              function FirstUpperCase(inputString){
                                return inputString.replace(inputString[0],inputString[0].toUpperCase());
                              };

                              输入:你好学生 输出:你好学生

                              【讨论】:

                              • 虽然这并没有错,但实际上并不是一种新方法。至少this answer 和this one 做同样的任务……
                              【解决方案23】:

                              如果我可以稍微修改一下代码。我发现如果我通过这个函数运行一个全大写字符串,什么都不会发生。所以……这是我的小事。首先强制字符串小写。

                              String.prototype.capitalize = function(){
                                  return this.toLowerCase().replace( /(^|\s)([a-z])/g , function(m, p1, p2) {
                                      return p1 + p2.toUpperCase();
                                  });
                              }
                              

                              【讨论】:

                              • 函数应该对已经是大写的字符串没有影响。该问题专门要求其余字符保持不变;用“埃菲尔铁塔”->“埃菲尔铁塔”看他的例子。您绝对不应该首先将所有内容都小写。
                              猜你喜欢
                              • 1970-01-01
                              • 1970-01-01
                              • 1970-01-01
                              • 1970-01-01
                              • 2022-01-09
                              • 2018-03-17
                              • 1970-01-01
                              • 2023-02-23
                              • 2011-08-18
                              相关资源
                              最近更新 更多