Alguem me ajuda nessa logica?

10 respostas
M

Pessoal fis uma funcao, para quando estiver em um jtextfield e escrever ex: forum guj the best, ele auto jogar para Forum Guj The Best, ele ate faz isso certo mas se eu escrever aaaaaa aaaaaaa aaaaaaaa no jtextfield ele retorna isso AAAAAA AAAAAAAAA AAAAAAAA invez de Aaaaaaa Aaaaaaaa Aaaaaaa, otro exemplo errado que ele esta fazendo escrevo no jtextfield alex almeida abobado ele retona isso Alex AlmeidA AbobAdo, alguem sabe o q tenho que mudar para resolver isso to a dias quebrando a cabeca mas n to conseguindo resolver esse problema veja meu codigo

String nome = jtextfield.getText().trim();
        //System.out.println("NOME = "+nome);
        String tmp[] = nome.split(" ");
        nome = "";
        for (int i = 0; i < tmp.length; i++) {
            if (tmp[i].length() > 2) {
                nome += tmp[i].replace(tmp[i].substring(0, 1), tmp[i].substring(0, 1).toUpperCase()) + " ";
                jtextfield.setText(nome);
                System.out.println("nome1 = "+nome);
            } else {
                nome += tmp[i] + " ";
                jtextfield.setText(nome);
                System.out.println("nome2 = "+nome);
            }
        }

10 Respostas

marcosharbs

execute o código abaixo
ele vai deixar a primeira letra de cada palavra em maiúsculo
so vc ajeitar dai para o seu proposito

String nome = "abaaaaaaaaa abaaaaaaaaaaa abaaaaaaaa abaa";  
String[] tmp = nome.split(" ");
nome = "";
for(int i=0; i<tmp.length; i++){
     String palavra = tmp[i].substring(0, 1).toUpperCase();
     palavra += tmp[i].substring(1);
     nome += palavra + " ";
}
System.out.println(nome);
zoren

É porque o método replace troca todas as letras q ele encontrar que sejam iguais a que vc passou pra ele

D

Hail

basta vc trocar nessa linha o replace por replaceFirst que ira funcionar.

//nome += tmp[i].replace(tmp[i].substring(0, 1), tmp[i].substring(0, 1).toUpperCase()) + " " nome += tmp[i].replaceFirst(tmp[i].substring(0, 1), tmp[i].substring(0, 1).toUpperCase()) + " "

lina

Oi,

Uma vez o usuário criador fez um método para isso e postou aqui:

String nome = "aaaaaa aaaaaaa aaaaaaaa";
String nova = "";
nova += nome.toUpperCase().charAt(0);

for (int ln = 0; ln < nome.length(); ln++) {
     switch (nome.charAt(ln))
     {
          case ' ':					
		
               // Recebe a posição atual.
               nova += " " + nome.toUpperCase().charAt(ln + 1);
					
               // Incrementa a contagem.
               ln++;
					
               // Pára o looping do case.
               break;
				
          case '_':
					
               // Recebe a posição atual.
               nova += "_" + nome.toUpperCase().charAt(ln + 1);
					
               // Incrementa a contagem.
               ln++;
					
               // Pára o looping do case.
               break;
			
          default:
               
               // Recebe a posição atual.
               nova += nome.toLowerCase().charAt(ln);
      }
}
System.out.println(nova);

Eu faria exatamente desta maneira, parabens a ele! =)

Tchauzin!

M

Lina fis do jeito que vc falou mas quando abro o formulario que esta esse codigo da erro aqui

String nome = jtextfield.getText().trim(); String nova = ""; nova += nome.toUpperCase().charAt(0);

e fala isso

java.lang.StringIndexOutOfBoundsException: String index out of range: 0

pq sera?

M

Dantalian deu certo thanks!

B
String entrada = "abaaaaaaaaa abaaaaaaaaaaa abaaaaaaaa abaa";
String fraseCapitalizada= org.apache.commons.lang.WordUtils.capitalize(entrada);
lina

Man_United:
Lina fis do jeito que vc falou mas quando abro o formulario que esta esse codigo da erro aqui

String nome = jtextfield.getText().trim(); String nova = ""; nova += nome.toUpperCase().charAt(0);

e fala isso

java.lang.StringIndexOutOfBoundsException: String index out of range: 0

pq sera?

Oi,

Pq a String nome está sem conteudo, ou seja, vazia.

Tchauzin!

lina

Bruno Laturner:
String entrada = "abaaaaaaaaa abaaaaaaaaaaa abaaaaaaaa abaa"; String fraseCapitalizada= org.apache.commons.lang.WordUtils.capitalize(entrada);

Oi,

Show eim! Realmente gostei dessa =P

Tchauzin!

criador

Muito bem lembrado pelo usuário Bruno Laturner.
Na realidade, para não precisar inserir o jar commons-lang-2.3 (http://www.ibiblio.org/maven/commons-lang/jars/) para utilizar este método, fiz o meu próprio “Initcap”, até porque utilizei este método para um aplicação pequena.
Porém se fosse necessário utilizá-lo com mais frequência, com certeza utilizaria WordUtils.capitalize(String).

Voltando ao assunto, acredito que ele tenha que utilizar não o WordUtils.capitalize(String) e sim WordUtils.capitalizeFully(String), porque o primeiro, se você digitar “Bem vindo aO GUJ”, ele retornaria “Bem Vindo AO GUJ”, ou seja, se houver alguma letra maiúscula depois da primeira letra da frase, ele manterá.
Contudo, o segundo método (capitalizeFully), retira estas letras maiúsculas caso a palavra tenha alguma além da primeira.

Acredito que ele quer fazer desta forma.

Bom, desculpe a minha viagem. Só queria esclarecer isto :wink: auhauhauhua

Se alguém não entendeu e estiver interessado, está aqui a descrição da classe (http://commons.apache.org/lang/apidocs/org/apache/commons/lang/WordUtils.html)

Abraço!

Criado 8 de outubro de 2009
Ultima resposta 8 de out. de 2009
Respostas 10
Participantes 7