Flex:在字符串中大写单词?

时间:2009-05-13 20:58:24

标签: flex capitalization

我试图在Flex中使用相当于PHP的ucwords()。我不希望整个字符串大写只是每个单词的第一个字母。有谁知道吗?

谢谢!

5 个答案:

答案 0 :(得分:11)

尝试

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

说明:

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

答案 1 :(得分:10)

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

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

答案 2 :(得分:1)

接受的答案假设字符串全部小写以开头。如果你从包含所有大写或随机混合大小写的字符串开始,这将不起作用。

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

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

答案 3 :(得分:1)

我在使用葡萄牙语的特殊字符时遇到了一些问题,因此我将其更改为此RegExp:

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

答案 4 :(得分:0)

我做了以下更改以通过一些错误和警告:

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

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

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

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