如何在JavaScript中使字符串的第一个字母大写?

如何在JavaScript中使字符串的第一个字母大写?,javascript,string,letter,capitalize,Javascript,String,Letter,Capitalize,如何使字符串的第一个字母大写,但不改变任何其他字母的大小写 例如: “这是一个测试”→ “这是一个测试” “埃菲尔铁塔”→ “埃菲尔铁塔” “/index.html”→ “/index.html” 基本解决方案是: 函数首字母大写(字符串){ 返回string.charAt(0.toUpperCase()+string.slice(1); } console.log(大写首字母('foo');//Foo这里有一个名为ucfirst()(大写字母的缩写)的函数: 您可以通过调用ucfirst(

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

例如:

  • “这是一个测试”
    → <代码>“这是一个测试”
  • “埃菲尔铁塔”
    → <代码>“埃菲尔铁塔”
  • “/index.html”
    → <代码>“/index.html”
    • 基本解决方案是:

      函数首字母大写(字符串){
      返回string.charAt(0.toUpperCase()+string.slice(1);
      }
      
      console.log(大写首字母('foo');//Foo
      这里有一个名为
      ucfirst()
      (大写字母的缩写)的函数:

      您可以通过调用
      ucfirst(“某些字符串”)
      来大写字符串,例如

      ucfirst("this is a test") --> "This is a test"
      
      它的工作原理是把绳子分成两段。在第一行,它拉出
      firstLetter
      ,然后在第二行,它通过调用
      firstLetter.toUpperCase()
      来大写
      firstLetter
      ,并将其与通过调用
      str.substr(1)
      找到的字符串的其余部分连接起来


      您可能会认为,对于空字符串,这将失败,事实上,在像C这样的语言中,您必须满足这一点。然而,在JavaScript中,当您获取空字符串的子字符串时,您只会得到一个空字符串。

      这里有一种更面向对象的方法:

      String.prototype.capitalize = function() {
          return this.charAt(0).toUpperCase() + this.slice(1);
      }
      
      您可以调用函数,如下所示:

      "hello, world!".capitalize();
      
      function capitalizeTxt(txt) {
        return txt.charAt(0).toUpperCase() + txt.slice(1); //or if you want lowercase the rest txt.slice(1).toLowerCase();
      }
      
      function capitalizeFirstLetter(str) {
        return str[0].toUpperCase() + str.slice(1);
      }
      
      预期输出为:

      "Hello, world!"
      
      用法:

      capitalizedString = someString.capitalize();
      

      这是一个文本字符串=>这是一个文本字符串

      如果要重新格式化所有caps文本,可能需要修改其他示例:

      function capitalize (text) {
          return text.charAt(0).toUpperCase() + text.slice(1).toLowerCase();
      }
      
      这将确保更改以下文本:

      TEST => Test
      This Is A TeST => This is a test
      

      以下是流行答案的缩写版本,它通过将字符串视为数组来获取第一个字母:

      function capitalize(s)
      {
          return s[0].toUpperCase() + s.slice(1);
      }
      
      更新 根据下面的评论,这在IE 7或更低版本中不起作用

      更新2: 要避免空字符串的
      未定义
      (请参阅),可以检查空字符串:

      function capitalize(s)
      {
          return s && s[0].toUpperCase() + s.slice(1);
      }
      
      ES版本
      const capitalize=s=>s&&s[0]。toUpperCase()+s.slice(1)
      //当s可能是假字符串而不是空字符串时始终返回类型字符串事件
      常量大写=s=>(s&&s[0].toUpperCase()+s.slice(1))|
      
      将字符串中所有单词的第一个字母大写:

      function ucFirstAllWords( str )
      {
          var pieces = str.split(" ");
          for ( var i = 0; i < pieces.length; i++ )
          {
              var j = pieces[i].charAt(0).toUpperCase();
              pieces[i] = j + pieces[i].substr(1);
          }
          return pieces.join(" ");
      }
      
      函数ucFirstAllWords(str)
      {
      变量片段=str.split(“”);
      对于(变量i=0;i
      在CSS中似乎更容易:

      <style type="text/css">
          p.capitalize {text-transform:capitalize;}
      </style>
      <p class="capitalize">This is some text.</p>
      
      
      p、 大写{文本转换:大写;}
      

      这是一些文本

      这是来自CSS中的(at)。

      p:first-letter {
          text-transform:capitalize;
      }
      

      (如果您经常使用它,您可以将其封装在函数中,甚至可以将其添加到字符串原型中。)

      我们可以使用我最喜欢的
      RegExp
      之一获得第一个字符,看起来像一个可爱的笑脸:
      /^./

      String.prototype.capitalize = function () {
        return this.replace(/^./, function (match) {
          return match.toUpperCase();
        });
      };
      
      对于所有咖啡迷来说:

      String::capitalize = ->
        @replace /^./, (match) ->
          match.toUpperCase()
      
      …对于所有认为有更好的方法来实现这一点的人,无需扩展本地原型:

      var capitalize = function (input) {
        return input.replace(/^./, function (match) {
          return match.toUpperCase();
        });
      };
      

      另一种情况下,我需要它将第一个字母大写,其余字母小写。以下情况使我更改了此功能:

      //es5
      function capitalize(string) {
          return string.charAt(0).toUpperCase() + string.slice(1).toLowerCase();
      }
      capitalize("alfredo")  // => "Alfredo"
      capitalize("Alejandro")// => "Alejandro
      capitalize("ALBERTO")  // => "Alberto"
      capitalize("ArMaNdO")  // => "Armando"
      
      // es6 using destructuring 
      const capitalize = ([first,...rest]) => first.toUpperCase() + rest.join('').toLowerCase();
      
      然后:

       "capitalize just the first word".capitalize(); ==> "Capitalize just the first word"
       "capitalize all words".capitalize(true); ==> "Capitalize All Words"
      
      2016年11月更新(ES6),仅供娱乐: 然后
      大写(“hello”)//hello

      如果使用或,库提供字符串扩展,包括大写:

      var str = "test string";
      str = str.substring(0,1).toUpperCase() + str.substring(1);
      
      _.大写(字符串)将字符串的第一个字母转换为 大写

      例如:

      _.capitalize("foo bar") == "Foo bar"
      
      使用:

      var str=“ruby java”;
      
      log(str.charAt(0.toUpperCase()+str.substring(1))检查此解决方案:

      var stringVal = 'master';
      stringVal.replace(/^./, stringVal[0].toUpperCase()); // Returns Master
      
      如果您对以下几种不同方法的性能感兴趣: 以下是基于的最快方法(从最快到最慢排序)

      如您所见,前两种方法在性能方面基本上是可比的,而更改
      String.prototype
      在性能方面是最慢的

      // 10,889,187 operations/sec
      function capitalizeFirstLetter(string) {
          return string[0].toUpperCase() + string.slice(1);
      }
      
      // 10,875,535 operations/sec
      function capitalizeFirstLetter(string) {
          return string.charAt(0).toUpperCase() + string.slice(1);
      }
      
      // 4,632,536 operations/sec
      function capitalizeFirstLetter(string) {
          return string.replace(/^./, string[0].toUpperCase());
      }
      
      // 1,977,828 operations/sec
      String.prototype.capitalizeFirstLetter = function() {
          return this.charAt(0).toUpperCase() + this.slice(1);
      }
      

      如果您已经(或正在考虑)使用,解决方案很简单:

      _.upperFirst('fred');
      // => 'Fred'
      
      _.upperFirst('FRED');
      // => 'FRED'
      
      _.capitalize('fred') //=> 'Fred'
      
      见其文件:

      。.camelCase('Foo Bar');//=>'fooBar'

      第一个大写字母的香草JavaScript:

      function upperCaseFirst(str){
          return str.charAt(0).toUpperCase() + str.substring(1);
      }
      
      仅CSS 如果仅在网页上显示时才需要转换:

      p::first-letter {
        text-transform: uppercase;
      }
      
      • 尽管称为“”,但它适用于第一个字符,即在字符串
        %a
        的情况下,此选择器将应用于
        %
        ,因此
        a
        不会大写
      • 在IE9+或IE5.5+中,传统符号仅支持一个冒号(
        :第一个字母
      ES2015单班轮 评论
      • 在我执行的基准测试中,
        string.charAt(0)
        string[0]
        之间没有显著差异。但是请注意,对于空字符串,
        string[0]
        将是
        未定义的
        ,因此必须重写该函数才能使用“
        string&&string[0]
        ”,这与备选方法相比过于冗长
      • string.substring(1)
        string.slice(1)
      substring()和
      slice()之间的基准测试
      如今,两者之间的差别非常小():

      • 21580613.15 ops/s±1.6%用于
        子字符串()
      • 对于
        slice()
        ,21096394.34 ops/s±1.8%(2.24%较慢

      最好先用CSS处理这类事情,一般来说,如果你能用CSS解决一些问题,先用CSS解决,然后用JavaScript解决你的问题,所以在这种情况下,试着用CSS中的
      :第一个字母
      ,然后应用
      文本转换:大写

      因此,请尝试为此创建一个类,这样您就可以全局使用它,例如:
      。第一个大写字母// 10,889,187 operations/sec
      function capitalizeFirstLetter(string) {
          return string[0].toUpperCase() + string.slice(1);
      }
      
      // 10,875,535 operations/sec
      function capitalizeFirstLetter(string) {
          return string.charAt(0).toUpperCase() + string.slice(1);
      }
      
      // 4,632,536 operations/sec
      function capitalizeFirstLetter(string) {
          return string.replace(/^./, string[0].toUpperCase());
      }
      
      // 1,977,828 operations/sec
      String.prototype.capitalizeFirstLetter = function() {
          return this.charAt(0).toUpperCase() + this.slice(1);
      }
      
      _.upperFirst('fred');
      // => 'Fred'
      
      _.upperFirst('FRED');
      // => 'FRED'
      
      _.capitalize('fred') //=> 'Fred'
      
      _.lowerFirst('Fred');
      // => 'fred'
      
      _.lowerFirst('FRED');
      // => 'fRED'
      
      _.snakeCase('Foo Bar');
      // => 'foo_bar'
      
      function upperCaseFirst(str){
          return str.charAt(0).toUpperCase() + str.substring(1);
      }
      
      var capitalized = yourstring[0].toUpperCase() + yourstring.substr(1);
      
      p::first-letter {
        text-transform: uppercase;
      }
      
      const capitalizeFirstChar = str => str.charAt(0).toUpperCase() + str.substring(1);
      
      .first-letter-uppercase:first-letter {
          text-transform:capitalize;
      }
      
      function capitalizeTxt(txt) {
        return txt.charAt(0).toUpperCase() + txt.slice(1); //or if you want lowercase the rest txt.slice(1).toLowerCase();
      }
      
      capitalizeTxt('this is a test'); // return 'This is a test'
      capitalizeTxt('the Eiffel Tower'); // return 'The Eiffel Tower'
      capitalizeTxt('/index.html');  // return '/index.html'
      capitalizeTxt('alireza');  // return 'Alireza'
      
      String.prototype.capitalizeTxt = String.prototype.capitalizeTxt || function() {
          return this.charAt(0).toUpperCase() + this.slice(1);
      }
      
      'this is a test'.capitalizeTxt(); // return 'This is a test'
      'the Eiffel Tower'.capitalizeTxt(); // return 'The Eiffel Tower'
      '/index.html'.capitalizeTxt();  // return '/index.html'
      'alireza'.capitalizeTxt();  // return 'Alireza'
      
      string[0].toUpperCase() + string.substring(1)
      
       s&&s[0].toUpperCase()+s.slice(1)        // 32 char
      
       s&&s.replace(/./,s[0].toUpperCase())    // 36 char - using regexp
      
      'foo'.replace(/./,x=>x.toUpperCase())    // 31 char - direct on string, ES6
      
      'foo'.replace(/^./, str => str.toUpperCase())
      
      'Foo'
      
      function capitalizeFirstLetter(str) {
        return str[0].toUpperCase() + str.slice(1);
      }
      
      capitalizeFirstLetter("Only because this is really a one-liner I will include this answer. It's an ES6-based interpolated string one-liner.

      let setStringName = 'the Eiffel Tower';
      setStringName = `${setStringName[0].toUpperCase()}${setStringName.substring(1)}`;