Apply proper uppercase and lowercase on a String

From CodeCodex

[edit] Implementations

[edit] Java


import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class StringUtils {

        public static String upperCaseWordFirst(String str) {
                StringBuffer sb = new StringBuffer();
                Matcher m = Pattern.compile
                ("([a-z])([a-z]*)",Pattern.CASE_INSENSITIVE).matcher(str);
                while (m.find()) {
                        m.appendReplacement(sb, m.group(1).toUpperCase()
                        + m.group(2).toLowerCase()) ;
                }
                str = m.appendTail(sb).toString();
                return str;
        }

        public static void main(String [] args)  {
                System.out.println(StringUtils.upperCaseWordFirst("  #600how-to"));
                System.out.println(StringUtils.upperCaseWordFirst("ELVis preSLEY"));
                System.out.println(StringUtils.upperCaseWordFirst("john o'connor & steeve mcmillan"));
                /*
                output :

                #600How-To
                Elvis Presley
                John O'Connor & Steeve Mcmillan

                for the "mcmillan", well this may be not enough and you will need
                to process it as a special case if needed...
                */
        }
}