Ssortingng contient – ignore la casse

Est-il possible de déterminer si un Ssortingng str1="ABCDEFGHIJKLMNOP" contient un modèle de chaîne strptrn="gHi" ? Je voulais savoir si cela est possible lorsque les caractères sont insensibles à la casse. Si c’est le cas, comment?

Vous pouvez utiliser

 org.apache.commons.lang3.SsortingngUtils.containsIgnoreCase(CharSequence str, CharSequence searchStr); 

Vérifie si CharSequence contient une recherche CharSequence indépendamment de la casse, en traitant null. L’insensibilité à la casse est définie par Ssortingng.equalsIgnoreCase (Ssortingng).

Un CharSequence nul renverra false.

Celui-ci sera meilleur que regex car regex est toujours coûteux en termes de performances.

Pour le document officiel, reportez-vous à: SsortingngUtils.containsIgnoreCase

Mettre à jour :

Si vous êtes parmi ceux qui

  • ne veux pas utiliser la bibliothèque Apache commons
  • ne veulent pas aller avec les solutions coûteuses regex/Pattern ,
  • ne voulez pas créer d’object de chaîne supplémentaire en utilisant toLowerCase ,

vous pouvez implémenter votre propre containsIgnoreCase personnalisé en utilisant java.lang.Ssortingng.regionMatches

 public boolean regionMatches(boolean ignoreCase, int toffset, Ssortingng other, int ooffset, int len) 

ignoreCase : si true, ignore la casse lors de la comparaison de caractères.

 public static boolean containsIgnoreCase(Ssortingng str, Ssortingng searchStr) { if(str == null || searchStr == null) return false; final int length = searchStr.length(); if (length == 0) return true; for (int i = str.length() - length; i >= 0; i--) { if (str.regionMatches(true, i, searchStr, 0, length)) return true; } return false; } 

Si vous n’allez pas avec regex:

 "ABCDEFGHIJKLMNOP".toLowerCase().contains("gHi".toLowerCase()) 

Vous pouvez utiliser java.util.regex.Pattern avec l’indicateur CASE_INSENSITIVE pour la correspondance insensible à la casse:

 Pattern.comstack(Pattern.quote(strptrn), Pattern.CASE_INSENSITIVE).matcher(str1).find(); 

Essaye ça

 public static void main(Ssortingng[] args) { Ssortingng original = "ABCDEFGHIJKLMNOPQ"; Ssortingng tobeChecked = "GHi"; System.out.println(containsSsortingng(original, tobeChecked, true)); System.out.println(containsSsortingng(original, tobeChecked, false)); } public static boolean containsSsortingng(Ssortingng original, Ssortingng tobeChecked, boolean caseSensitive) { if (caseSensitive) { return original.contains(tobeChecked); } else { return original.toLowerCase().contains(tobeChecked.toLowerCase()); } } 

Une version optimisée d’Imran Tariq

 Pattern.comstack(strptrn, Pattern.CASE_INSENSITIVE + Pattern.LITERAL).matcher(str1).find(); 

Pattern.quote (strptrn) renvoie toujours “\ Q” + s + “\ E” même s’il n’y a rien à citer, la concatination gâche les performances.