Oui, il est sensible à la casse. Vous pouvez faire une recherche insensible à la casse indexOf
en convertissant votre String et le paramètre String en majuscules avant la recherche.
String str = "Hello world";
String search = "hello";
str.toUpperCase().indexOf(search.toUpperCase());
Notez que toUpperCase peut ne pas fonctionner dans certaines circonstances. Par exemple, ceci :
String str = "Feldbergstraße 23, Mainz";
String find = "mainz";
int idxU = str.toUpperCase().indexOf (find.toUpperCase ());
int idxL = str.toLowerCase().indexOf (find.toLowerCase ());
idxU sera 20, ce qui est faux ! idxL sera 19, ce qui est correct. La cause du problème est que toUpperCase() convertit le caractère "ß" en DEUX caractères, "SS", ce qui déséquilibre l'index.
Par conséquent, utilisez toujours toLowerCase().
3 votes
Non pas que je sois un grand fan des performances ou quoi que ce soit d'autre (en fait, je considère que l'optimisation des performances est un mal), mais le .toUpperCase copie votre chaîne de caractères à chaque fois que vous l'appelez, donc si vous faites cela dans une boucle, essayez de déplacer le .toUpperCase hors de la boucle si possible.