Amigos, vocês sabem como posso comparar duas Strings de modo que possa ser verificado que determinada string é diferente de outra? Exemplificando: String a,b; … while (a!=b)… ou … if (a!=b)…
Sei que não se usa != para comparar strings e sim o método equals. Todavia, a sintaxe que sei apenas compara verificando se as strings são iguais. Como faço para verificar se são diferentes (tipo while (a!=b)) ?
Fico grata a quem puder ajudar.
Ok. Rapazes. Ótimas dicas. Problema resolvido. Sinceros agradecimentos a Thingol, Thiago, GraveDigger, Otavio, ViniGodoy, Paulohrl.
[quote=thiago.correa][quote=paulohrl]while (a.equals(b) == false)
[/quote]
Só para constar, o trecho …== false não é obrigatório, mas deixa o código mais claro![/quote]
Na verdade eh obrigado sim, no caso dela querer executar um loop caso as string sejam diferentes, terá q usar o == false, se não o bloco nem será executado!!
Claro q ela poderia usar while (!a.equals(b)), mas a sua colocação está incorreta(tenho certeza q vc viu uma exclamação ali,hehe).
O equals compara se todos os char de uma string são iguais, o que na grande maioria das vezes já é suficiente.
Caso você tenha Strings com texto em idiomas orientais, ou mesmo em alguns casos que usem acentuação, você deverá usar o equals da classe Collator.
Basicamente é praticamente igual ao equals da classe String:
a == b Collator.getInstance().equals(string1, string2) ou
Collator.getInstance().compare(string1, string2) == 0
a != b !Collator.getInstance().equals(string1, string2)
a < b Collator.getInstance().compare(string1, string2) < 0
a > b Collator.getInstance().compare(string1, string2) > 0
Para mais informações sobre o assunto, dê uma olhada em:
Essa é uma daquelas dicas para-quedas. Você dificilmente vai precisar dela, mas vai ser muito bom contar com ela quando for necessário…
[quote=thiago.correa][quote=paulohrl]while (a.equals(b) == false)
[/quote]
Só para constar, o trecho …== false não é obrigatório, mas deixa o código mais claro![/quote]
O problema do Java é ter herdado esses operadores do C. Se Java tivesse pegado as idéias do Pascal teríamos:
while a <> b do
que é muito mais claro que essa história de comparar com “true” ou “false”.
[quote=GraveDigger]
Claro q ela poderia usar while (!a.equals(b)), mas a sua colocação está incorreta(tenho certeza q vc viu uma exclamação ali,hehe).[/quote]
Hã :?: :?: :?: :?: ! :roll:
Com certeza, se tivesse colocado !a.equals(b) eu nem teria metido o bico!
[quote=ViniGodoy]O equals compara se todos os char de uma string são iguais, o que na grande maioria das vezes já é suficiente.
Caso você tenha Strings com texto em idiomas orientais, ou mesmo em alguns casos que usem acentuação, você deverá usar o equals da classe Collator.
Basicamente é praticamente igual ao equals da classe String:
a == b Collator.getInstance().equals(string1, string2) ou
Collator.getInstance().compare(string1, string2) == 0
a != b !Collator.getInstance().equals(string1, string2)
a < b Collator.getInstance().compare(string1, string2) < 0
a > b Collator.getInstance().compare(string1, string2) > 0
Para mais informações sobre o assunto, dê uma olhada em:
Essa é uma daquelas dicas para-quedas. Você dificilmente vai precisar dela, mas vai ser muito bom contar com ela quando for necessário…[/quote]
Outra coisa interessante, que já postei aqui, é usar o Collator para fazer comparação desprezando os acentos e cedilhas.
Exemplo:
String a = "Gisele da Conceição Bündchen";
String b = "gisele da conceicao bundchen";
Collator collator = Collator.getInstance (new Locale ("pt", "BR"));
collator.setStrength(Collator.PRIMARY); // importante!
// A linha a seguir imprime "true" indicando que a e b são iguais,
// se desprezarmos os acentos, cedilhas, minúsculas e maiúsculas.
System.out.println (collator.compare (a, b) == 0);