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

A voir également:

1 réponse

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