Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1215 connectés 

  FORUM HardWare.fr
  Programmation
  Java

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°705152
Titalium
Posté le 21-04-2004 à 15:56:24  profilanswer
 

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
mood
Publicité
Posté le 21-04-2004 à 15:56:24  profilanswer
 

n°705156
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 21-04-2004 à 15:58:11  profilanswer
 

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.
n°705164
Titalium
Posté le 21-04-2004 à 16:03:43  profilanswer
 

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.

n°705168
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 21-04-2004 à 16:08:16  profilanswer
 

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.
n°705174
Titalium
Posté le 21-04-2004 à 16:11:23  profilanswer
 

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

n°705177
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 21-04-2004 à 16:13:44  profilanswer
 

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.
n°705183
Titalium
Posté le 21-04-2004 à 16:17:07  profilanswer
 

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...

n°705274
nraynaud
lol
Posté le 21-04-2004 à 17:21:35  profilanswer
 

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
n°705281
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 21-04-2004 à 17:27:07  profilanswer
 

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.
n°705369
nraynaud
lol
Posté le 21-04-2004 à 18:52:38  profilanswer
 

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
mood
Publicité
Posté le 21-04-2004 à 18:52:38  profilanswer
 

n°705611
Titalium
Posté le 22-04-2004 à 08:23:48  profilanswer
 

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...

n°705621
neogally
Battle Angel Alita
Posté le 22-04-2004 à 08:44:02  profilanswer
 

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

n°705874
Titalium
Posté le 22-04-2004 à 13:18:33  profilanswer
 

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 ;)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

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

 

Sujets relatifs
[Java] un objet File a partir d'un Reader?[Java] jEditorPane : j'ai dumal là :/
lancement d'un programme java via un shellLancement d'un programme JAVA via un script
[PHP] Changer localement le niveau d'erreur dans un fichier[Java] parser fichier CSV... JDBC ?
[Résolu][Java]JavaHelp need Help :)Gerer les evenements java
comment faire un rapport à partir d'une application javaJava Struts
Plus de sujets relatifs à : [JAVA] Compraison de chaines, erreur de débutant je pense


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR