Java : interrogation au sujet de regionMatches()

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Java : interrogation au sujet de regionMatches()

par katagoto » 20 juin 2008, 13:14

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

par Wolfgang » 19 juin 2008, 21:51

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:

par sadeq » 19 juin 2008, 21:45

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"

par albat » 19 juin 2008, 21:41

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>

par Wolfgang » 19 juin 2008, 20:53

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.

par katagoto » 19 juin 2008, 20:17

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

par Wolfgang » 19 juin 2008, 20:05

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.

par katagoto » 19 juin 2008, 19:39

Euh, tu pourrait réexpliqué ta question ? xD

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

Java : interrogation au sujet de regionMatches()

par Wolfgang » 19 juin 2008, 19:19

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