IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

[String] Comparaison de chaînes ?


Sujet :

Langage Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 58
    Points : 50
    Points
    50
    Par défaut [String] Comparaison de chaînes ?
    Bon, suis pas débutant ^^
    Je sais comment on compare une chaîne de caractères (ou tout du moins, les bases). Visiblement, j'ai du loupé quelques subtilités Java.

    Soit le bout de code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    String packageName = getSyntaxPackageName();
    URL url = Schema.class.getResource(
    		"/" + packageName.replace( '.', '/' ) );
     
    if( url==null )
    	return null;
     
    String protocole = url.getProtocol().trim().toLowerCase();
    System.out.println( protocole );
     
    if( protocole.equals( "jar" ) ) { ... }
    Quelqu'un pourrait-il m'expliquer pourquoi d'une machine à une autre, je ne rentre pas dans mon if ? J'ai fait tous les tests possibles que je connaisse, au boulot et sur mon fixe, JDK 1.5_06 ja comparaison est OK. Sur mon portable, JDK 1.5_03 et JDK1.5_07 la comparaison ne se fait pas, le equals retourne false. Pourtant, mes deux chaînes sont identiques !!!

    Il y aurait-il une histoire d'encodage de caractères là-dessous ?

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    548
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 548
    Points : 635
    Points
    635
    Par défaut
    A priori plutot une différence Windows / Unix non ?
    Pour les paths, mieux vaut utiliser la constante File.separatorChar

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 58
    Points : 50
    Points
    50
    Par défaut
    nop, tout est sous Windows.
    Et oui, merci pour l'astuce, c'est vrai que j'avais zappé la compatibilité du separator dans ce bout de code.

  4. #4
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    Peut-être que d'un système à un autre, il y a une différence dans le chemin retourné par l'URL...

    Vérifie que les 2 URL soient pareilles, peut-être qu'il y a une petite différence qui fait que tu n'arrives pas au final avec 2 chaîne égale...

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 58
    Points : 50
    Points
    50
    Par défaut
    bah url.getProtocol().trim().toLowerCase() me retourne le mot jar. Je suis sur qu'il est en minuscule, certain qu'il n'y a pas d'espaces autour.

    Le System.out.println en dessous m'affiche bien ce que je veux (j'ai mis des quotes autour pour faire des tests, non dans l'exemple de mon premier post). Je comprends rien. Les 2 chaînes sont les mêmes : 3 caractères, le mot jar.

    EDIT : AH ah ah ! Au temps pour moi ! Je rentre bien dans le if. J'ai juste une exception que je catch ensuite, mais qui n'affiche rien Désolé pour ce désagrément ^^ J'aurais bien aimé que ce soit un bug de Java

Discussions similaires

  1. Comparaison de chaînes
    Par log2n dans le forum Assembleur
    Réponses: 12
    Dernier message: 20/02/2006, 19h21
  2. MySQL, et les comparaisons de chaînes en cyrillique, Chinois
    Par SuperCed dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 15/12/2005, 15h24
  3. [String]comparaison de différence
    Par Regis.C dans le forum Langage
    Réponses: 29
    Dernier message: 31/10/2005, 20h49
  4. Réponses: 4
    Dernier message: 05/07/2004, 13h17
  5. [String] Substitution de chaînes
    Par nenoeil dans le forum Langage
    Réponses: 9
    Dernier message: 22/04/2004, 10h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo