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!
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!
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.
This is the same as Rafael's answer but with no warnings :)
str.replace(/\b./g,function(...m):String{return m[0].toUpperCase()});
The accepted answer assumes that the string is all lower-case to start with. If you start with a string with all upper-case or random mixed-cases, this will not work.
Here is a simple modification that does not require the source string to be all lower-case to begin with:
str.toLowerCase().replace(/\b./g,function(...m):String{return m[0].toUpperCase()});
I had some problems with special characters in Portuguese, so I changed it to this RegExp:
str.replace(/(^|\s|\t)+\S/g, function(...m):String{return m[0].toUpperCase()});
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);