J'ai créé un programme Java pour comparer deux chaînes:
String s1 = "Hello";
String s2 = "hello";
if (s1.equals(s2)) {
System.out.println("hai");
} else {
System.out.println("welcome");
}
Il affiche "bienvenue". Je comprends que c'est sensible à la casse. Mais mon problème est que je souhaite comparer deux chaînes sans respecter la casse. Ie je m'attends à ce que la sortie soit hai
.
s1.equalsIgnoreCase(s2)
vous risquez de ne pas le faire partout où cela doit être fait. Je suggère que vous trouviez d'où vient la chaîne - un fichier ou une base de données ou une entrée utilisateur peut-être - et que vous la convertissiez en majuscules (ou en minuscules) et que vous continuiez à utiliser .equals pour la comparaison.
equalsIgnoreCase
approche acceptée . Renseignez-vous sur le problème turc I et les problèmes Unicode similaires pour la justification.
equalsIgnoreCase
renvoie de toute façon la mauvaise valeur pour le turc, car il renvoie true pour comparer "i" et "I", même s'il doit renvoyer false. Donc je soupçonne que si vous voulez prendre en compte les paramètres régionaux, Collator
c'est en fait la voie à suivre.
toLowerCase
/ toUpperCase
sur toute la chaîne et le faire par caractère donne également deux résultats différents.