Comment vérifier si une chaîne contient une sous-chaîne en Java
- Vérifier si une chaîne contient une sous-chaîne en Java
 - 
          
            Trouver la sous-chaîne en utilisant le 
indexOf()Mehtod en Java - Trouver une sous-chaîne en utilisant Regex en Java
 - 
          
            Trouver une sous-chaîne en utilisant 
Apacheen Java - Trouver la sous-chaîne en utilisant Java Regex
 
Ce tutoriel présente la manière de vérifier si une chaîne de caractères contient une sous-chaîne en Java et donne quelques exemples de codes pour la comprendre.
Vérifier si une chaîne contient une sous-chaîne en Java
Une chaîne qui fait partie d’une autre chaîne est appelée sous-chaîne pour cet objet String. Une chaîne est une séquence de caractères et un objet immuable en Java. Vérifions si une sous-chaîne existe dans la chaîne donnée.
Dans cet exemple, nous utilisons la méthode contains() de la classe String qui retourne true si la sous-chaîne de la chaîne est trouvée. Nous utilisons la méthode toLowerCase() pour vérifier la casse des caractères ignorés.
public class SimpleTesting {
  public static void main(String[] args) {
    String str = "abracadaabra";
    String subStr = "daa";
    boolean containsStr = str.contains(subStr);
    System.out.println(containsStr);
    // Check with string ignore case
    subStr = "Daa";
    containsStr = str.toLowerCase().contains(subStr.toLowerCase());
    System.out.println(containsStr);
    subStr = "baa";
    containsStr = str.toLowerCase().contains(subStr.toLowerCase());
    System.out.println(containsStr);
  }
}
Production:
true
true
false
Trouver la sous-chaîne en utilisant le indexOf() Mehtod en Java
La méthode indexOf() de la classe String est utilisée pour obtenir l’index de la sous-chaîne dans une chaîne mais nous pouvons l’utiliser pour trouver la sous-chaîne.
Ici, nous vérifions si l’index de la sous-chaîne est supérieur ou égal à zéro, ce qui signifie que la sous-chaîne est trouvée. Si la sous-chaîne n’existe pas dans la chaîne, elle retourne -1.
Voir l’exemple et la sortie.
public class SimpleTesting {
  public static void main(String[] args) {
    String str = "abracadaabra";
    String subStr = "daa";
    boolean containsStr = str.indexOf(subStr) >= 0;
    System.out.println(containsStr);
    // check with string ignore case
    subStr = "DaA";
    containsStr = str.toLowerCase().indexOf(subStr.toLowerCase()) >= 0;
    System.out.println(containsStr);
    subStr = "aaa";
    containsStr = str.indexOf(subStr) >= 0;
    System.out.println(containsStr);
  }
}
Production:
true
true
false
Trouver une sous-chaîne en utilisant Regex en Java
Nous pouvons également utiliser la méthode matches() de l’objet String qui prend la regex comme argument et retourne soit true soit false.
public class SimpleTesting {
  public static void main(String[] args) {
    String str = "abracadaabra";
    String subStr = "daa";
    boolean containsStr = str.matches("(?i).*" + subStr + ".*");
    System.out.println(containsStr);
    subStr = "daa";
    containsStr = str.matches("(?i).*" + subStr + ".*");
    System.out.println(containsStr);
  }
}
Production:
true
true
Trouver une sous-chaîne en utilisant Apache en Java
Si vous utilisez la bibliothèque commune Apache, vous pouvez utiliser la méthode containsIgnoreCase() de la classe StringUtils qui retourne true si la sous-chaîne est trouvée, false sinon. Voir l’exemple ci-dessous.
import org.apache.commons.lang3.StringUtils;
public class SimpleTesting {
  public static void main(String[] args) {
    String str = "abracadaabra";
    String subStr = "daa";
    boolean containsStr = StringUtils.containsIgnoreCase(str, subStr);
    System.out.println(containsStr);
    subStr = "DAa";
    containsStr = StringUtils.containsIgnoreCase(str, subStr);
    System.out.println(containsStr);
    subStr = "AcWF";
    containsStr = StringUtils.containsIgnoreCase(str, subStr);
    System.out.println(containsStr);
  }
}
Production:
true
true
false
Trouver la sous-chaîne en utilisant Java Regex
Java fournit un paquet regex qui contient plusieurs classes et méthodes. L’une de ces classes est une classe Pattern qui fournit quelques méthodes comme compile(), quote(), matcher(), etc. Ici, nous utiliserons ces méthodes pour trouver une sous-chaîne de caractères.
import java.util.regex.Pattern;
public class SimpleTesting {
  public static void main(String[] args) {
    String str = "abracadaabra";
    String subStr = "daa";
    boolean containsStr =
        Pattern.compile(Pattern.quote(subStr), Pattern.CASE_INSENSITIVE).matcher(str).find();
    System.out.println(containsStr);
    subStr = "RaCA";
    containsStr =
        Pattern.compile(Pattern.quote(subStr), Pattern.CASE_INSENSITIVE).matcher(str).find();
    System.out.println(containsStr);
  }
}
Production:
true
true