Primeira letra Maiusculas com preposições minusculas

Olá amigos do GUJ…

estou fazendo um teste com codigo aki eu preciso deixar a primeira letra de cada palavra em maiuscula e as preposições (de, da, do, dos, das) somente em minusculas…

Segue código…

 private void teste() {
        String msg = jTextField1.getText();

        // usando metodo depreciado
        String out = StringUtils.capitalize(msg);

        System.out.println(out);

        // uma palavra por vez
        String[] words = msg.trim().split(" ");
        out = "";
        for (int i = 0; i < words.length; i++) {
            if (words[i].equals("dos") || words[i].equals("das")) {
                out = " " + words[i].toLowerCase() + " ";
                words[i] = " ";
            } else {
                words[i] = StringUtils.capitalize(words[i]);
                out += words[i] + " ";
            }
        }

        jTextField2.setText(out);

    }

tipo exemplo: angra dos reis

deveria sair: Angra dos Reis

mas está saindo: dos Reis

agradeço a ajuda de voces … abraço!!!

[code]public class Foo {

public static void main( String[] args ){

    String in = "uma frase que é bem grande para o TESTE do programa DO colEGA douglas do ano de 1986";

    StringBuilder out = new StringBuilder();

    for ( String s : in.toLowerCase().trim().split( " " ) ) {

        if ( !( s.equals("de") ||
            s.equals("da") ||
            s.equals("do") ||
            s.equals("dos") ||
            s.equals("das") ) ) {
            out.append( Character.toUpperCase( s.charAt( 0 ) ) ).append( s.substring( 1, s.length() ) );
        } else {
            out.append( s );
        }

        out.append( " " );

    }

    System.out.println( out.toString().trim() );

}

}[/code]

[]'s

Muito obrigado meu amigo davidbuzzato funcionou certinho aki…valew!!!