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