Converter string para letra inicial maiuscula

5 respostas
R

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,

5 Respostas

F
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
R
Dae rapaz,





Valeu pela ajuda, mas não funcionou. Pelo menos me inspirou  <img src="https://cdn.jsdelivr.net/gh/twitter/twemoji@14/assets/72x72/s.pngmiley.png?v=9" title=":smiley:" class="emoji" alt=":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  :-]
F

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

R
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!



F

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

Criado 21 de maio de 2003
Ultima resposta 22 de mai. de 2003
Respostas 5
Participantes 2