Como verificar se uma string contém uma string em Java

Mohammad Irfan 12 outubro 2023
  1. Verifique se uma string contém uma subestrutura em Java
  2. Encontrar substring utilizando o método indexOf() Mehtod em Java
  3. Encontrar substring usando Regex em Java
  4. Encontrar Substring utilizando o Apache em Java
  5. Encontrar Substring Utilizando Java Regex
Como verificar se uma string contém uma string em Java

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

Artigo relacionado - Java String