Page 1 sur 1

Java : interrogation au sujet de regionMatches()

Posté : 19 juin 2008, 19:19
par Wolfgang

Code : Tout sélectionner

1.Public class test 2.{ 3.public string void main (string [] arg ) 4.{ 5.String test1 = '' test pour voir ce que ça donne ''; 6.String test2 = '' Test Pour Voir Ce que ça donne ''; 7.System.out.println ('' Comparaison des 10 premiers caractères : ''); 8.if ( test1.regionMatches ( false, 0, test2, 0, 10)) 9.System.out.println (''Les 10 premiers caractères sont identiques''); 10.else 11.System.out.println (''Différence entre les 10 premiers caractères''); 12.if (test2..regionMatches ( 0, test2, 0, 0)) 13.System.out.println('' Les caractères de 0 à 10 sont identiques'') 14.else 15.System.out.println ('' Il y a des différence'');
regionMatches() : Si elle renvoie true, les deux portions de chaines sont identiques, dans ces conditions, en ligne 8, pourquoi si regionMatches renvoie false (''if ( test1.regionMatches ( false, 0, test2, 0, 10))''), alors les 10 premiers caractères sont considérés comme identiques.
En effet, pourquoi lorsqu'il envoie true, dans la ligne 12, il ne prend pas en compte les majuscules et miniscules lors de la comparaison.

EDIT : Titre du sujet légèrement modifié (Albat') ;)

Posté : 19 juin 2008, 19:39
par katagoto
Euh, tu pourrait réexpliqué ta question ? xD

PS : PHPFrance != JAVAFrance, mais je veux bien essayé de comprendre...

Posté : 19 juin 2008, 20:05
par Wolfgang
Déjà, bonjour et merci de t'intéresser à mon problème,
heu, comment expliquer ça,

Code : Tout sélectionner

1.Public class test 2.{ 3.public string void main (string [] arg ) 4.{ 5.String test1 = '' test pour voir ce que ça donne ''; 6.String test2 = '' Test Pour Voir Ce que ça donne ''; 7.System.out.println ('' Comparaison des 10 premiers caractères : ''); 8.if ( test1.regionMatches ( false, 0, test2, 0, 10))
Ici, la condition dis si tes1 comparé à test2 renvoie faux, alors afficher "Les 10 premiers caractères sont identiques".

Code : Tout sélectionner

9.System.out.println (''Les 10 premiers caractères sont identiques''); 10.else 11.System.out.println (''Différence entre les 10 premiers caractères''); 12.if (test2.regionMatches ( 0, test2, 0, 10))
Ici, le booléen figurant dans l'appel précédent n'existe plus, car par défaut, elle est équivalente à l'appel de la méthode suivante : test2.regionMatches ( true, 0, test2, 0, 10). En conséquence je voulais savoir pourquoi cette méthode travaille sans tenir compte des majuscules.

Code : Tout sélectionner

13.System.out.println('' Les caractères de 0 à 10 sont identiques'') 14.else 15.System.out.println ('' Il y a des différence'');
En effet le résultat de l'exécution est :

Comparaison des 10 premiers caractères :
Différence entre les 10 premiers caractères
Les caractères de 0 à 10 sont identiques

ps: Je n'étais pas au courant de l'existence de java France, j'ai posté sur ce site, car je sais que les réponses sont quasiment immédiates, et souvent très juste.

Posté : 19 juin 2008, 20:17
par katagoto
Je sais pas si JAVAFrance éxiste mais pourquoi n'utilisie tu pas un simple ==, je penses que ça tiens compte de la casse... Tu devrait voir du côté de la doc s'il y en a une...

PS : Après tout, je n'y connais rien en JAVA...

Posté : 19 juin 2008, 20:53
par Wolfgang
Je n'utilise pas == car je cherchais à comprendre comment fonctionne regionMatches, et j'ai eu quelque difficultés de compréhension lorsque j'ai commencer à l'utiliser. Notamment dans l'extrait de code cité auparavant, cela dis, si personne n'a la réponse,( pas trop de rapport avec le php me direz vous) je continuais en poursuivant mes recherches. Dans tous les cas, merci et bonne soirée. Pour les autres,dans l'attente d'une réponse de votre part, je vous souhaite également une bonne soirée.

Posté : 19 juin 2008, 21:41
par albat
Modération :
katagoto - Effectivement, nous sommes sur un forum francophone dédié au PHP.
Cela dit, cela n'interdit en rien d'aborder d'autres sujets, d'autres technologies.
D'ailleurs, on traite bien du HTML, du XML, du CSS, du JS,... sur ce forum. ;)

Sans compter qu'un certain nombre de nos valeureux PHPistes
s'avèrent aussi d'émérites Javaistes (bon, d'accord : en cachette, mais quand même !) :lol:

En plus, yuukizo a pris le soin d'inscrire sa demande dans le forum "Autre",
ce qui est exactement ce qu'il fallait faire. Donc rien à dire.

Allez, les javaistes, on vous attend !
=D>

Posté : 19 juin 2008, 21:45
par sadeq
Sous Java, la méthode regionMatches() s'appliquant aux chaines de caractères permet de comparer, comme tu l'as dit, dans deux chaines données, deux parties repérées chacune par une position de départ et un nombre de caractères identique.

Il existe alors deux variantes de la méthode regionMatches():
  • 1. une forme de comparaison qui automatiquement ignore la casse (majuscules/minuscules) et c'est le comportement par défaut représenté par la forme :

    Code : Tout sélectionner

    boolean regionMatches(int toffset, String other, int ooffset, int len)
    2. une forme de comparaison où l'on peut choisir manuelement d'ignorer la casse (majuscules/minuscules) ou pas et c'est ce qui est représenté par la forme :

    Code : Tout sélectionner

    boolean regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len)
Exemples:

Code : Tout sélectionner

String texte1 = "Mes parents m'ont bien éduqué."; String texte2 = "MES PARENTS m'ont bien enseigné."; boolean test1 = texte1.regionMatches(0, texte2, 0, 11); //compare les 11 premiers car des 2 textes //Ce test retourne true (vrai) car ignorant la casse : "Mes parents" est égale à "MES PARENTS" boolean test2 = texte1.regionMatches(true, 0, texte2, 0, 11); //compare les 11 premiers car des 2 textes //Comme celui d'avant, ce test retourne true (vrai) car ignorant la casse : "Mes parents" est égale à "MES PARENTS" boolean test3 = texte1.regionMatches(false, 0, texte2, 0, 11); //compare les 11 premiers car des 2 textes //Ce test retourne false (faux) car sans ignorer la casse : "Mes parents" n'est pas égale à "MES PARENTS"

Posté : 19 juin 2008, 21:51
par Wolfgang
Merci pour cette réponse explicite, donc ce n'était pas une mauvaise interprétation de ma part, il s'agissait donc d'une variante de la fonction, je comprend mieux maintenant, j'aurais dû commencer par chercher par là... Dans tous les cas, je vous remercie de cette explication. Sur ce, passait une bonne soirée.
:wink:

Posté : 20 juin 2008, 13:14
par katagoto
Ca va floodé mais je dois me défendre un peu
Modération :
katagoto - Effectivement, nous sommes sur un forum francophone dédié au PHP.
Cela dit, cela n'interdit en rien d'aborder d'autres sujets, d'autres technologies.
D'ailleurs, on traite bien du HTML, du XML, du CSS, du JS,... sur ce forum. ;)

Sans compter qu'un certain nombre de nos valeureux PHPistes
s'avèrent aussi d'émérites Javaistes (bon, d'accord : en cachette, mais quand même !) :lol:

En plus, yuukizo a pris le soin d'inscrire sa demande dans le forum "Autre",
ce qui est exactement ce qu'il fallait faire. Donc rien à dire.

Allez, les javaistes, on vous attend !
=D>
Je n'ai jamais dit le contraire, et n'ai cherché en rien à la faire partir, au contraire...

Si ce n'est pas ce que vous avez compris, je m'en escuse, je m'exprimmerais mieu la prochaine fois...