Converter string para letra inicial maiuscula

Dae rapaziada,



Seguinte:



To com uma baita preguiça :-? de fazer um algorítmo pra converter textos pro padrão: "Aaaaa Bbbbb Ccccc", ou seja, se for um texto "AAAAA BBBBB CCCCC" ele passa pro exemplo anterior. O mesmo aconteceria se o texto fosse todo minúsculo.



No caso também teria de excluir as preposições (aprendi isso hoje, pra quem não sabe, é "de, da, do, dos, das").



Simplificando, é um algorítmo pra converter nomes próprios que estão todos em maiúsculo/minúsculo pra um padrão onde somente a primeira letra é maiúscula, e o resto minúsculo.



Se alguém já tem um pronto, ou estiver a fim de fazer um e digitar aqui, blz!



Agradicido,

tenta issu:



String string = ""; // essa eh a string a ser transformada

boolean ultimochar = true;

String x = "";

for (int i = 0; i < string.length; i++){

if (ultimochar){

x += (string.charAt(i)).toUpperCase();

ultimochar = false;

}

else{

x += (string.charAt(i)).toLowerCase();

}

if (string.charAt(i) == " "){

ultimochar = true;

}

}

string = x;



nem testei, mas deve funcionar…

Dae rapaz,



Valeu pela ajuda, mas não funcionou. Pelo menos me inspirou :smiley:



Usei o teu algorítmo como base e criei o seguinte:



protected String converteNomeProprio(String nome)

{

String str, min, maiusc, resultado, aux;

boolean ultimochar;

int tamanho, i, j;



str = nome;

maiusc = "";

min = "";

aux = "";

resultado = "";

tamanho = str.length();

i = 0;



// System.out.println("Nome original -> "+nome);



for (j = 1; j < tamanho; j++)

{

if ( (Character.isWhitespace(str.charAt(j))) || (j == (tamanho-1)) )

{

maiusc = str.substring(i, (i+1)).toUpperCase();

min = str.substring((i+1), (j+1)).toLowerCase();



aux = maiusc + min;



if (aux.equalsIgnoreCase("de ") ||

aux.equalsIgnoreCase("des ") ||

aux.equalsIgnoreCase("do ") ||

aux.equalsIgnoreCase("dos ") ||

aux.equalsIgnoreCase("da ") ||

aux.equalsIgnoreCase("das ") ||

aux.equalsIgnoreCase("e ")

)

aux = aux.toLowerCase();



resultado += aux;

i = 1 + j;

}

}

// System.out.println("Nome alterado -> "+resultado);

return resultado;

}



Esse funfou.



Valeu pela ajuda :-]



mals o meu codigo n ter funcionado, eh q eu sou iniciante em java… mas se pelo menos eu te mostrei o caminho ta blz!

soh um aviso: no for vc iniciou o j como 1 e n como 0, e o charAt (assim como o substr e outros codigos para manipular strings) comeca pelo numero 0 ex:



String x = "abcdef";

System.out.println(x.charAt(1)); // imprime b

System.out.println(x.charAt(0)); // imprime a

Quote:


22/05/2003 - 17:08, Felipe wrote:

mals o meu codigo n ter funcionado, eh q eu sou iniciante em java… mas se pelo menos eu te mostrei o caminho ta blz!

soh um aviso: no for vc iniciou o j como 1 e n como 0, e o charAt (assim como o substr e outros codigos para manipular strings) comeca pelo numero 0 ex:



String x = "abcdef";

System.out.println(x.charAt(1)); // imprime b

System.out.println(x.charAt(0)); // imprime a






É, eu sei, por isso usei o "i", daí o "i" fica no início da palavra, enquanto o "j" marca o final.



Valeu!



hauahuahauhauhau eu q tava viajando, eu tinha dado uma olhada rapida e vi no primeiro if q soh tinha j e no for q j tava comecando por 1 hauahuahuahuahua