【问题标题】:How to capitalise the first letter of every word in a string如何将字符串中每个单词的首字母大写
【发布时间】:2014-05-19 08:42:10
【问题描述】:

我正在使用 Flex SDK,并且能够将每个单词的首字母大写如下:

textInput.text.toLowerCase().replace(/\b./g,function(...m):String{return m[0].toUpperCase()})

这很好用,但是标点符号后面的字母也被大写,这在某些情况下有效(例如 O'Neil),但在其他情况下无效(例如 Connah'S Quay)。

我想让代码只查看字符串开头的字母和空格后的字母。谁能提供在这种情况下使用的正确代码吗?

【问题讨论】:

    标签: string actionscript-3 apache-flex flex4.6


    【解决方案1】:
    var test = "thIS is a test ansWER to stack OVERFlow";
    
    function process(sentence) {
        var words = sentence.split(" ");
        var processed = '';
    
        for(var i=0; i < words.length; i++) {
            processed += words[i].substr(0,1).toUpperCase() +
            words[i].substr(1).toLowerCase();
    
            if(i < words.length-1) {
                processed += " ";
            }
        }
        return processed;
    }
    
    console.log(process(test));
    

    【讨论】:

      【解决方案2】:

      如果你愿意,试试这个正则表达式:

      /(^| )./g
      

      【讨论】:

        【解决方案3】:
        private function capitalise(s:String):String
        {
            var strArray:Array = s.split(' ');
            var newArray:Array = new Array();
            for each (var str:String in strArray)
                newArray.push(str.charAt(0).toUpperCase()+str.slice(1));
        
            return newArray.join(' ');
        }
        
        trace(capitalise("this is a test - o'Neil - connah's quay"));
        
        // Output: This Is A Test - O'Neil - Connah's Quay
        

        【讨论】:

          【解决方案4】:

          这个 sn-p 可能会有所帮助:

          function firstLetterUpperCase(strData:String):String 
          {
              var strArray:Array = strData.split(' ');
              var newArray:Array = [];
              for (var str:String in strArray) 
              {
                 newArray.push(strArray[str].charAt(0).toUpperCase() + strArray[str].slice(1));
              }
              return newArray.join(' ');
          }
          
          //testing
          var strs = "Testing cases (e.g. o'Neil) and others (e.g. connah's quay)."
          trace(firstLetterUpperCase(strs));
          

          结果是:

          //Testing Cases (e.g. O'Neil) And Others (e.g. Connah's Quay).
          

          【讨论】:

          • 您的代码不起作用。我现在已经回答了我自己的问题。谢谢。
          • 刚刚测试了我的代码,它可以正常工作,就像你的一样。在这里查看:wonderfl.net/c/w6EG
          【解决方案5】:
            var input = "i aM tHe kiNG";
            capitalised = capitalize(input);
            function capitalize(input)
            {
              var splited = input.split(" ");
              //console.log(splited);
              var output = Array();
              for (i in splited)
              {
                //convert each letter into lower case
                var temp = splited[i].toLowerCase();
                //Convert the first char upper case and join with the rest letters of word.
                temp = temp.charAt(0).toUpperCase() + temp.substring(1);
                //store the word in the array
                output.push(temp);
              }
              //join the words
              return output.join(" ");
            }
          

          输出将是:我是国王

          【讨论】:

            猜你喜欢
            • 2010-12-05
            • 2014-06-19
            • 2010-11-12
            • 2011-01-20
            • 2021-09-07
            • 2010-09-09
            相关资源
            最近更新 更多