2

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

谢谢!

4

5 回答 5

11

尝试

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

解释:

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

于 2009-05-13T21:11:49.057 回答
10

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

str.replace(/\b./g,function(...m):String{return m[0].toUpperCase()});
于 2010-01-07T22:05:19.680 回答
1

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

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

str.toLowerCase().replace(/\b./g,function(...m):String{return m[0].toUpperCase()});
于 2011-05-25T13:14:27.787 回答
1

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

str.replace(/(^|\s|\t)+\S/g, function(...m):String{return m[0].toUpperCase()});
于 2011-09-05T14:57:30.427 回答
0

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

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

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

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

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

于 2009-05-19T16:01:30.360 回答