startsWith() la méthode de la chaîne de ignorant la casse
Je veux utiliser startsWith()
méthode de String
mais en ignorant le cas.
Supposons que j'ai String
"Session" et j'utilise startsWith
sur "sEsSi", alors il doit retourner true
.
- merci à tous pour les réponses..résolu à l'aide de "Session".toLowerCase().startsWith("sEsSi".toLowerCase());
- Il n'y a pas de raison de fermer cette question. De toute façon, la meilleure solution est d'utiliser
string.regionMatches(true, 0, prefix, 0, prefix.length());
qui n'a pas à supporter le coût de la "normalisation" des deux chaînes. - J'ai trouvé cette question utile. Je me demandais si il y avait une meilleure façon de le faire, d'autres que l'appel d'
toLowerCase
- Bien pour moi. La bonne réponse est posté dans mon commentaire ci-dessus. Il est beaucoup plus efficace que de changer le cas de chaînes de caractères. Il serait bon de le mettre à niveau vers une réponse plutôt qu'un commentaire.
Vous devez vous connecter pour publier un commentaire.
Utilisation
toUpperCase()
outoLowerCase()
de normaliser votre chaîne avant de le tester.String.equalsIgnoreCase()
vous découvrirez que vous avez besoin de comparer les deux majuscules et minuscules versions des Cordes avant de vous pouvez de façon concluante retourfalse
. Voir stackoverflow.com/a/38947571/14731 une alternative à la réponse."İstanbul".toLowerCase().startsWith("istanbul".toLowerCase())
(dans les paramètres Régionaux.Turc de l'environnement), il va me donner de faux.Une option est de convertir les deux d'entre eux, soit en minuscules ou en majuscules:Ce qui est faux. Voir: https://stackoverflow.com/a/15518878/14731
Une autre option est d'utiliser
String#regionMatches()
méthode, qui prend un argument booléen indiquant si la casse de correspondance ou non. Vous pouvez l'utiliser comme ceci:Il vérifie si la région de
needle
à partir de l'index0
jusqu'à la longueur5
est présent danshaystack
à partir de l'indice de0
jusqu'à la longueur5
ou pas. Le premier argument esttrue
, signifie qu'il ne sera insensible à la casse.Et si seulement vous êtes un grand fan de Regex, vous pouvez faire quelque chose comme ceci:
(?i)
intégré drapeau est pour ignorer la casse de correspondance.System.out.println("Session".toLowerCase().startsWith("sEsSi".toLowerCase()));
n'est pas un propper solution. Vous pouvez essayer ceci:System.out.println("SessIon".toLowerCase().startsWith("sEsSi".toLowerCase()));
avec vm arguments-Duser.country=TR -Duser.language=tr
Dans cet exemple, leI
est en majusculesi
essayer cela,
Vous pouvez utiliser
someString.toUpperCase().startsWith(someOtherString.toUpperCase())
Vous pouvez toujours faire
utilisation commence avec et toLowerCase ensemble
comme ce