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
Apache
en 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