Como verificar se uma string contém uma string em Java
- Verifique se uma string contém uma subestrutura em Java
-
Encontrar substring utilizando o método
indexOf()Mehtod em Java - Encontrar substring usando Regex em Java
-
Encontrar Substring utilizando o
Apacheem Java - Encontrar Substring Utilizando Java Regex
Este tutorial introduz como verificar se uma string contém uma substring em Java e lista alguns exemplos de códigos para entendê-la.
Verifique se uma string contém uma subestrutura em Java
Uma string que é uma parte de outra string é conhecida como substrato para aquele objeto String. Uma string é uma seqüência de caracteres e um objeto imutável em Java. Vamos verificar se existe um substring na string dada.
Neste exemplo, utilizamos o método contains() da classe String que retorna true se a substring da string for encontrada. Utilizamos o método toLowerCase() para verificar se o caso é ignorado.
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);
}
}
Resultado:
true
true
false
Encontrar substring utilizando o método indexOf() Mehtod em Java
O método indexOf() da classe String é utilizado para obter o índice do substring em uma string, mas podemos utilizá-lo para encontrar o substring.
Aqui, verificamos se o índice do substring é maior ou igual a zero do que significa que o substring é encontrado. Se o substrato não existir na string, ele retorna -1.
Veja o exemplo e a saída.
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);
}
}
Resultado:
true
true
false
Encontrar substring usando Regex em Java
Também podemos utilizar o método matches() do objeto String que toma o regex como argumento e retorna ou true ou 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);
}
}
Resultado:
true
true
Encontrar Substring utilizando o Apache em Java
Se você utilizar a biblioteca Apache commons, então você pode utilizar o método containsIgnoreCase() da classe StringUtils que retorna true se o substrato for encontrado, false caso contrário. Veja o exemplo abaixo.
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);
}
}
Resultado:
true
true
false
Encontrar Substring Utilizando Java Regex
Java fornece um pacote regex que contém várias classes e métodos. Uma dessas classes é uma classe Pattern que fornece alguns métodos como compile(), quote(), matcher(), etc. Aqui, utilizaremos esses métodos para encontrar substrato.
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);
}
}
Resultado:
true
true