我试图在Flex中使用相当于PHP的ucwords()。我不希望整个字符串大写只是每个单词的第一个字母。有谁知道吗?
谢谢!
答案 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);