我正在尝试在 Flex 中做相当于 PHP 的 ucwords() 的操作。我不希望整个字符串都是大写的,只是每个单词的第一个字母。有人知道方法吗?
谢谢!
我正在尝试在 Flex 中做相当于 PHP 的 ucwords() 的操作。我不希望整个字符串都是大写的,只是每个单词的第一个字母。有人知道方法吗?
谢谢!
尝试
str.replace(/\b./g,function(m){return String(m).toUpperCase()});
解释:
正则表达式 /\b./g 匹配单词边界,后跟任何字符。所有匹配都将传递给 replace 方法的第二个参数中定义的匿名函数。该函数返回大写的匹配。
这与拉斐尔的回答相同,但没有警告:)
str.replace(/\b./g,function(...m):String{return m[0].toUpperCase()});
接受的答案假定字符串都是小写的。如果您从一个全部大写或随机混合大小写的字符串开始,这将不起作用。
这是一个简单的修改,不需要源字符串以全部小写开头:
str.toLowerCase().replace(/\b./g,function(...m):String{return m[0].toUpperCase()});
我在葡萄牙语中遇到了一些特殊字符的问题,所以我把它改成了这个正则表达式:
str.replace(/(^|\s|\t)+\S/g, function(...m):String{return m[0].toUpperCase()});
我进行了以下更改以克服一些错误和警告:
str.replace(/\b./g,function(m:String):String{return m.toUpperCase()});
但它给了我一个奇怪的崩溃,说它只有一个参数时有三个参数。
我试图修复正则表达式,但我的 regex-fu 不是很好。所以我踢了。这有效(至少,对于字符串中的第一个单词)。对于多个单词,您必须使用拆分。
str = str.substr(0,1).toUpperCase() + str.substr(1,str.length);