views:

1223

answers:

3

I am trying to do the equivalent of PHP's ucwords() in Flex. I dont want the whole string in uppercase just the first letter of each word. Does anyone know a way?

Thanks!

+9  A: 

Try

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

explanation:

the regex /\b./g matches a word boundary followed by any character. All matches will be passed to the anonymous function defined in second parameter of replace method. The function returns the match capitalized.

Rafael
Hi your code works great, but you had 1 error I needed to fix, you have 1 too many ) at the end. Thanks.
John Isaacks
A: 

I made the following changes to get past some errors and warnings:

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

but it gave me a strange crash, saying that it had three parameters when only one was expected.

I tried to fix the regex, but my regex-fu is not great. So I punted. This works (at least, for the first word in a string). For multiple words, you'd have to use the split.

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

I got the same error when I tried to do that too, but leaving it the way Rafael made it works.
John Isaacks
I finally figured out how to make this work without any errors or warnings: str.replace(/\b./g,function(...m):String{return m[0].toUpperCase()});
John Isaacks
+1  A: 

This is the same as Rafael's answer but with no warnings :)

str.replace(/\b./g,function(...m):String{return m[0].toUpperCase()});
John Isaacks
Works like a champ. Thanks!
Reed Olsen