[JAVA] Compraison de chaines, erreur de débutant je pense

Compraison de chaines, erreur de débutant je pense [JAVA] - Java - Programmation

Marsh Posté le 21-04-2004 à 15:56:24    

voici un bout de code très simple :
 

Code :
  1. String a1 = "kikikokokiki";
  2. String a2 = "kiki";
  3. System.out.println(a1.matches(a2));
  4. System.out.println(a2.matches(a1));


 
Et bien le résultat de ceci est :
 

Code :
  1. false
  2. false


 
J'avoue que je ne comprend pas du tout pourquoi logiquement l'une des deux (la première je pense) devrait renvoyer true non ? C'est quoi mon erreur là, je coince dessus comme un idiot :/


Message édité par Titalium le 21-04-2004 à 15:57:05
Reply

Marsh Posté le 21-04-2004 à 15:56:24   

Reply

Marsh Posté le 21-04-2004 à 15:58:11    

Ba là, faut lire la doc :

Citation :


public boolean matches(String regex)
 
    Tells whether or not this string matches the given regular expression.


Donc tu peux pas comparer 2 chaînes comme ça. Tu compares 2 chaînes avec la méthode equals().
Mate bien la javadoc hein, ça résoud la plupart des problèmes, en général :o


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 21-04-2004 à 16:03:43    

OK, désolé, je me disais que equals, c'était que pour si les chaines était parfaitement egale. Bon, ben désolé pour le dérangement.

Reply

Marsh Posté le 21-04-2004 à 16:08:16    

Ah non, autant pour moi, j'avais pas bien lu ton truc :D
Donc tu peux utiliser indexOf() pour ton type de recherche.


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 21-04-2004 à 16:11:23    

OK, je vais tester ;)
 
Mais alors à quoi sert matches() ?

Reply

Marsh Posté le 21-04-2004 à 16:13:44    

Titalium a écrit :

OK, je vais tester ;)
 
Mais alors à quoi sert matches() ?


Pour des trucs plus compliqués, pour savoir si ta chaîne répond à plusieurs conditions à la fois. Genre pour vérifier si la chaîne est un email valide, par exemple.


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 21-04-2004 à 16:17:07    

OK d'accord, merci pour le coup de main :)
 
J'ai remplacé mes matches() par indexOf(), et ça tourne comme je veux. :D Forcément c'est nettement plus efficace comme ça...

Reply

Marsh Posté le 21-04-2004 à 17:21:35    

et en remplaçant indexOf() par startWith() ? ça serait pas encore mieux ?
http://java.sun.com/j2se/1.4.2/doc [...] ng.String)
 
et lire le manuel de temps-en temps ?


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 21-04-2004 à 17:27:07    

nraynaud a écrit :

et en remplaçant indexOf() par startWith() ? ça serait pas encore mieux ?
http://java.sun.com/j2se/1.4.2/doc [...] ng.String)
 
et lire le manuel de temps-en temps ?


Oui mais startsWith() c'est bien uniquement pour quand ça "commence par", comme son nom l'indique. Stu veux savoir si une chaîne est présente dans une autre (comme je pense que c'est son cas), c'est plutôt indexOf() [:spamafote]


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 21-04-2004 à 18:52:38    

Taiche a écrit :

Oui mais startsWith() c'est bien uniquement pour quand ça "commence par", comme son nom l'indique. Stu veux savoir si une chaîne est présente dans une autre (comme je pense que c'est son cas), c'est plutôt indexOf() [:spamafote]

ah bon, ok. On est pas sur le même besoin.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 21-04-2004 à 18:52:38   

Reply

Marsh Posté le 22-04-2004 à 08:23:48    

nraynaud a écrit :

et en remplaçant indexOf() par startWith() ? ça serait pas encore mieux ?
http://java.sun.com/j2se/1.4.2/doc [...] ng.String)
 
et lire le manuel de temps-en temps ?


 
Pour startWith(), non ça va pas pour ce que je dois faire. Merci quand même.
 
Et lire le manuel, je l'ai fait, c'est bon. J'utilisais une fonction en JavaScript qui s'appelait match() et qui faisait ça. Quand j'ai trouvé matches() en Java, j'ai matté la doc, ça me semblais assez proche (sauf que c'est pas avec une chaine c'est avec une expression regulière), donc ça m'a induit en erreur. C'est pas parce qu'on pose une question con qu'on y met pas du sien...

Reply

Marsh Posté le 22-04-2004 à 08:44:02    

Titalium a écrit :

Pour startWith(), non ça va pas pour ce que je dois faire. Merci quand même.
 
Et lire le manuel, je l'ai fait, c'est bon. J'utilisais une fonction en JavaScript qui s'appelait match() et qui faisait ça. Quand j'ai trouvé matches() en Java, j'ai matté la doc, ça me semblais assez proche (sauf que c'est pas avec une chaine c'est avec une expression regulière), donc ça m'a induit en erreur. C'est pas parce qu'on pose une question con qu'on y met pas du sien...


 
 :lol: c pas mal ca. j'aprecie  :D

Reply

Marsh Posté le 22-04-2004 à 13:18:33    

neogally a écrit :

:lol: c pas mal ca. j'aprecie  :D  


 
Ben il me semble que c'est pas dénué de sens... La doc, je l'ai lu et je pensais avoir trouvé ma fonction adéquate avec mon matches(). Or j'avais pas le résultat que je voulais, donc je me suis tourné vers le forum. Par contre, je comprend complètement que pour des types qui maîtrisent bien le langage, ma question puisse paraître idiote.
 
Donc : j'y ai bien mis du mien (j'ai dans le doc, j'ai fais pas mal de tests, etc...) et malgré tout j'ai posé une question à la con par ce que j'étais bloqué. CQFD.
 
Là je suis en train de me poser d'autres question, mais je cherche encore dans la doc un moment avant de demander ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed