Comparaison des chaînes de caractères

Résolu
cs_amelA Messages postés 83 Date d'inscription jeudi 17 novembre 2005 Statut Membre Dernière intervention 23 juin 2007 - 9 déc. 2005 à 00:57
cs_amelA Messages postés 83 Date d'inscription jeudi 17 novembre 2005 Statut Membre Dernière intervention 23 juin 2007 - 9 déc. 2005 à 11:20
bonjour,
comment pourrai je comparer deux chaînes de caractères?
sachant que j'ai eu les deux chaînes de caractères de la manière suivante:

//le premier mot:
String[] result = zone.getText().split("[file://b%22)/ \\b")];
// le texte est récupéré à partir de jTextArea
String mot1 =(String) result[x];//en utilisant une boucle
//le deuxième mot:
ResultSet cur1=req.executeQuery("select * from insign");
//insign une table à 2 colonnes (int,String)
String mot2 = cur1.getString(2);//en utilisant une boucle

j'ai essayer le (==) et la méthode "equals" mais ça n'a pas marché(le résultat est éronné).

merci.
A voir également:

6 réponses

pitouik Messages postés 7 Date d'inscription samedi 16 août 2003 Statut Membre Dernière intervention 9 décembre 2005 1
9 déc. 2005 à 10:13
Attention à ne pas confondre l'opérateur = = et la
méthode équals(). L'opérateur == compare les références des objets. Par
contre la méthode equals() de l'objet String compare bien une chaîne de
caractères à une autre.




Javadoc pour String :

public boolean equals (Object anObject)




Compares this string to the specified object. The result is
true
if and only if the argument is not
 null
and is a
String
object that represents
the same sequence of characters as this object.



Petit exemple :

public static void main(String[] args)

{

String str1 = new String("hello");

String str2 = new String("hello");



System.out.println(str1==str2); // Résultat : false

System.out.println(str1.equals(str2)); // Résultat : true

}



Si tes chaînes semblent identiques à l'affichage
mais que la méthode retourne false, c'est qu'il y a peut-être des
caractères d'espacement qui trainent en fin ou en début de chaîne. Tu
as plusieurs manières de vérifier :



En ajoutant un caractère supplémentaire en début et en fin de chaîne afin de mieux repérer les caractères en trop :


System.out.println("#" + str1 + "#");


System.out.println("#" + str2 + "#");




En affichant la longeur des chaines :


System.out.println(str1 + " " + str1.length());


System.out.println(str2 + " " + str2.length());



Ensuite si la présence de caractères d'espacement est bien le souci, tu utilises la méthode trim() :

str1 = str1.trim();

str2 = str2.trim();




Tu peux aussi comparer et faire le trim() en même temps (mais ce n'est pas très joli) :

str1.trim().equals(str2.trim());



Et si ça ne fonctionne pas, tu peux toujours essayer d'afficher le code
ASCII de chacun des caractères de tes chaînes pour voir où ça coince.
Mais normalement ça derait fonctionner...
3
jcodeunpeu Messages postés 365 Date d'inscription mercredi 9 novembre 2005 Statut Membre Dernière intervention 2 décembre 2006 2
9 déc. 2005 à 01:12
bonsoir,
ne convient pas pour comparer 2 chaînes, mais equals oui, çà m'étonne que ça marche pas...
qu'entends tu par le résultat est erroné ?
si tu ne dois pas tenir compte des espaces, un trim() des deux chaînes avant comparaison est recommandé .... puis essayes aussi str1.compareTo(str2);
ps : =(String) result[x];// ici le cast est inutile puis
0
cs_amelA Messages postés 83 Date d'inscription jeudi 17 novembre 2005 Statut Membre Dernière intervention 23 juin 2007
9 déc. 2005 à 02:04
c'est à dire quand j'affiche mot1 et mot2 (pour vérifier) et bien c'est la même chaîne de caractère qui s'affiche or il considère que se sont deux chaînes différentes.
quant au trim() et bien je sais pas comment l'integrer dans mon programme ( je sais pas l'utiliser), ça serait sympa si tu me donnais un petit exemple sur l'utilisation du
trim().
au fait j'ai essayer la méthode compareTo mais ça n'a pas marché.
merci
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
9 déc. 2005 à 08:47
Attention, le equals compare les pointeurs sur les chaînes de caractères il me semble, du coup, si tu fait :

String mot1 = New String("coucou");

String mot2 = New String("coucou");



equals te renverra false, par contre :

String mot1 = new String("coucou");

String mot2 = mot1;



Alors la, equals te renverra true car les deux pointeurs pointe sur le même objets.



Utilise compareTo pour comparer des chaînes :

if (mot1.compareTo(mot2) == 0)

System.out.println("Egal !");

_____________________________________________________________________
DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) tout en français : www.ProgOtoP.com/popapi/
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jcodeunpeu Messages postés 365 Date d'inscription mercredi 9 novembre 2005 Statut Membre Dernière intervention 2 décembre 2006 2
9 déc. 2005 à 10:17
voilà tout est dit je crois ... A+
0
cs_amelA Messages postés 83 Date d'inscription jeudi 17 novembre 2005 Statut Membre Dernière intervention 23 juin 2007
9 déc. 2005 à 11:20
cool ça marche!! effectivement il y avait des espaces en plus, trim() a reglé le problème.
MERCI
0
Rejoignez-nous