Comparaison de String

soyen -  
KX Messages postés 19031 Statut Modérateur -
Bonjour,

Quelque chose m'échappe et je demande vos avis et aide

lorsque je fais :

String toto = files[i].getName().trim();
String titi = rep.trim() + ".txt".trim();

int compare = toto.compareTo(titi);

System.out.println("Comparaison = " +compare); J'obtiens bien Comparaison = 0

mais maintenant lorsque je mets une condition

if (files[i].getName().trim().compareTo(rep.trim() + ".txt".trim()) ==0) LA CONDITION EST FAUSSE

même en faisant if (toto.compareTo(titi) == 0)

merci pour vos lumière...

1 réponse

  1. KX Messages postés 19031 Statut Modérateur 3 020
     
    Bonjour,

    Quelles valeurs as-tu pris ?

    En testant ceci j'ai bien
    0
    et
    true
    comme attendu :

    public static void main(String[] args) {
        File[] files = { new File("   C:\\azerty.txt   ") };
        int i = 0;
        String rep = "   azerty   ";
        String toto = files[i].getName().trim();
        String titi = rep.trim() + ".txt".trim();
        int compare = toto.compareTo(titi);
        System.out.println("Comparaison = " + compare);
        if (files[i].getName().trim().compareTo(rep.trim() + ".txt".trim()) == 0)
            System.out.println(true);
        else
            System.out.println(false);
    }

    Remarque : la méthode
    trim()
    enlève les espaces au début et à la fin d'un String, or
    ".txt"
    n'en contient pas, donc
    ".txt".trim()
    ne sert à rien, le résultat sera toujours
    ".txt"
    que tu devrais donc mettre directement.
    Dans le même ordre idée,
    files[i]
    est un
    File
    donc
    files[i].getName()
    est un nom bien formé, s'il contient des espaces au début ou à la fin (bien qu'interdit sur la plupart des OS) il faut les garder sinon tu ne pointeras pas vers le bon fichier :
    "azerty.txt"
    est différent de
    "azerty.txt   "
    ...
    0