Comment vérifier si une chaîne contient une sous-chaîne en Java

Mohammad Irfan 12 octobre 2023
  1. Vérifier si une chaîne contient une sous-chaîne en Java
  2. Trouver la sous-chaîne en utilisant le indexOf() Mehtod en Java
  3. Trouver une sous-chaîne en utilisant Regex en Java
  4. Trouver une sous-chaîne en utilisant Apache en Java
  5. Trouver la sous-chaîne en utilisant Java Regex
Comment vérifier si une chaîne contient une sous-chaîne en Java

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

Article connexe - Java String