【问题标题】:Flex: Capitalize words in string?Flex:将字符串中的单词大写?
【发布时间】:2009-05-13 20:58:23
【问题描述】:

我正在尝试在 Flex 中做相当于 PHP 的 ucwords()。我不希望整个字符串都是大写的,只是每个单词的第一个字母。有人知道方法吗?

谢谢!

【问题讨论】:

    标签: apache-flex capitalization


    【解决方案1】:

    试试

    str.replace(/\b./g,function(m){return String(m).toUpperCase()});
    

    解释:

    正则表达式 /\b./g 匹配单词边界,后跟任何字符。所有匹配都将传递给 replace 方法的第二个参数中定义的匿名函数。该函数返回大写的匹配项。

    【讨论】:

    • 您好,您的代码运行良好,但您有 1 个错误需要修复,最后您有 1 个错误。谢谢。
    【解决方案2】:

    这与拉斐尔的回答相同,但没有警告:)

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

    【讨论】:

      【解决方案3】:

      我在葡萄牙语中遇到了一些特殊字符的问题,所以我把它改成了这个 RegExp:

      str.replace(/(^|\s|\t)+\S/g, function(...m):String{return m[0].toUpperCase()});
      

      【讨论】:

        【解决方案4】:

        接受的答案假定字符串都是以小写字母开头的。如果你以一个全大写或随机混合大小写的字符串开头,这将不起作用。

        这里是一个简单的修改,不需要源字符串全部以小写开头:

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

        【讨论】:

          【解决方案5】:

          我进行了以下更改以克服一些错误和警告:

          str.replace(/\b./g,function(m:String):String{return m.toUpperCase()});

          但它给了我一个奇怪的崩溃,说它只有一个预期的参数时有三个参数。

          我尝试修复正则表达式,但我的正则表达式不太好。所以我踢了。这有效(至少,对于字符串中的第一个单词)。对于多个单词,您必须使用拆分。

          str = str.substr(0,1).toUpperCase() + str.substr(1,str.length);

          【讨论】:

          • 我在尝试这样做时也遇到了同样的错误,但按照 Rafael 的方式进行操作。
          • 我终于弄清楚了如何在没有任何错误或警告的情况下完成这项工作:str.replace(/\b./g,function(...m):String{return m[0]. toUpperCase()});
          猜你喜欢
          • 2016-09-06
          • 2018-08-06
          • 2016-02-15
          • 1970-01-01
          • 1970-01-01
          • 2013-02-28
          • 2010-10-16
          • 1970-01-01
          相关资源
          最近更新 更多