162 votes

La chaîne contient - ignorez la casse

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

241voto

PeterMmm Points 11099

Si vous ne voulez pas utiliser le regex :

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

234voto

rahulroc Points 4165

Vous pouvez utiliser

org.apache.commons.lang3.StringUtils.containsIgnoreCase("ABCDEFGHIJKLMNOP", "gHi");

Celui-ci est peut-être meilleur que le regex car les expressions rationnelles sont toujours coûteuses en termes de performance.

22voto

Imran Tariq Points 3822

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

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

8voto

Rais Alam Points 3162

Essayez ceci

public static void main(String[] args)
{

    String original = "ABCDEFGHIJKLMNOPQ";
    String tobeChecked = "GHi";

    System.out.println(containsString(original, tobeChecked, true));        
    System.out.println(containsString(original, tobeChecked, false));

}

public static boolean containsString(String original, String tobeChecked, boolean caseSensitive)
{
    if (caseSensitive)
    {
        return original.contains(tobeChecked);

    }
    else
    {
        return original.toLowerCase().contains(tobeChecked.toLowerCase());
    }

}

2voto

Evgeniy Dorofeev Points 52031

Une version optimisée d'Imran Tariq

Pattern.compile(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 concaténation gâche la performance.

Prograide.com

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.

Powered by:

X