Je veux utiliser la méthode string.startsWith()
mais en ignorant la casse.
Supposons que j'ai une String
"Session" et que j'utilise startsWith
sur "sEsSi", alors cela devrait retourner true
.
Comment puis-je y arriver ?
Je veux utiliser la méthode string.startsWith()
mais en ignorant la casse.
Supposons que j'ai une String
"Session" et que j'utilise startsWith
sur "sEsSi", alors cela devrait retourner true
.
Comment puis-je y arriver ?
Une option consiste à convertir les deux en minuscules ou en majuscules :
Une autre option consiste à utiliser la méthode String#regionMatches()
, qui prend un argument booléen indiquant s'il faut effectuer une comparaison sensible à la casse ou non. Vous pouvez l'utiliser de cette manière :
String haystack = "Session";
String needle = "sEsSi";
System.out.println(haystack.regionMatches(true, 0, needle, 0, needle.length())); // true
Cela vérifie si la région de needle
de l'index 0
à la longueur 5
est présente dans haystack
à partir de l'index 0
jusqu'à la longueur 5
ou non. Le premier argument est true
, ce qui signifie qu'il effectuera une comparaison insensible à la casse.
Et si vous êtes un grand fan des Regex, vous pouvez faire quelque chose comme ceci :
System.out.println(haystack.matches("(?i)" + Pattern.quote(needle) + ".*"));
L'indicateur intégré (?i)
est pour une correspondance insensible à la casse.
Je sais que je suis en retard, mais que diriez-vous d'utiliser StringUtils.startsWithIgnoreCase() de Apache Commons Lang 3 ?
Exemple :
StringUtils.startsWithIgnoreCase(string, "début");
Il suffit d'ajouter la dépendance suivante à votre fichier pom.xml (en supposant que vous utilisez Maven) :
org.apache.commons
commons-lang3
3.11
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.