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
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: |
|
É, 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