2009-03-26 7 views

Répondre

11

utiliser une expression régulière et la marquer comme insensible à la casse:

if (myStr.matches("(?i).*template.*")) { 
    // whatever 
} 

Le tourne sur la casse et le * à chaque fin du match terme de recherche (i?). tous les caractères environnants (puisque String.matches fonctionne sur toute la chaîne).

+2

J'adore les regexes mais c'est un peu exagéré dans ce cas – siukurnin

+0

@CoverosGene quand j'ai ajouté ce code pour rechercher un colonne dans mon jtable alors ce code fonctionne parfaitement, mais a un problème qui au lieu de rechercher les éléments les plus haut de la chaîne bits recherche d'abord les éléments les plus bas? Pouvez-vous me dire ce que je fais de mal ??? –

31

String.indexOf(String)

Pour une affaire recherche insensible, à toUpperCase ou toLowerCase à la fois la chaîne d'origine et la sous-chaîne avant la indexOf

String full = "my template string"; 
String sub = "Template"; 
boolean fullContainsSub = full.toUpperCase().indexOf(sub.toUpperCase()) != -1; 
+0

+1 et je supprime ma réponse. Le vôtre est meilleur pour les deux parties de la question. –

+0

Bien sûr, si vous prévoyez de faire beaucoup de comparaisons n'oubliez pas de stocker une version supérieure de la chaîne la plus utilisée – siukurnin

3

Vous pouvez utiliser indexOf() et toLowerCase() pour le cas tests insensibles aux sous-chaînes.

String string = "testword"; 
boolean containsTemplate = (string.toLowerCase().indexOf("template") >= 0); 
1
String word = "cat"; 
String text = "The cat is on the table"; 
Boolean found; 

found = text.contains(word); 
Questions connexes