Controlla se una stringa contiene una sottostringa in Java

Mohammad Irfan 12 ottobre 2023
  1. Controlla se una stringa contiene una sottostringa in Java
  2. Trova sottostringa usando il Mehtod indexOf() in Java
  3. Trova sottostringa utilizzando Regex in Java
  4. Trova sottostringa utilizzando Apache in Java
  5. Trova sottostringa utilizzando Java Regex
Controlla se una stringa contiene una sottostringa in Java

Questo tutorial introduce come verificare se una stringa contiene una sottostringa in Java ed elenca alcuni codici di esempio per comprenderla.

Controlla se una stringa contiene una sottostringa in Java

Una stringa che fa parte di un’altra stringa è nota come sottostringa per quell’oggetto String. Una stringa è una sequenza di caratteri e un oggetto immutabile in Java. Controlliamo se esiste una sottostringa nella stringa data.

In questo esempio, usiamo il metodo contains() della classe String che restituisce true se viene trovata la sottostringa della stringa. Usiamo il metodo toLowerCase() per verificare la presenza di maiuscole e minuscole.

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);
  }
}

Produzione:

true
true
false

Trova sottostringa usando il Mehtod indexOf() in Java

Il metodo indexOf() della classe String è usato per ottenere l’indice della sottostringa in una stringa ma possiamo usarlo per trovare la sottostringa.

Qui, controlliamo se l’indice della sottostringa è maggiore o uguale a zero di quanto significhi che la sottostringa è stata trovata. Se la sottostringa non esiste nella stringa, restituisce -1.

Vedi l’esempio e l’output.

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);
  }
}

Produzione:

true
true
false

Trova sottostringa utilizzando Regex in Java

Possiamo anche usare il metodo match() dell’oggetto String che accetta regex come argomento e restituisce true o 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);
  }
}

Produzione:

true
true

Trova sottostringa utilizzando Apache in Java

Se usi la libreria Apache commons, puoi usare il metodo containsIgnoreCase() della classe StringUtils che restituisce true se viene trovata la sottostringa, altrimenti false. Vedi l’esempio sotto.

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);
  }
}

Produzione:

true
true
false

Trova sottostringa utilizzando Java Regex

Java fornisce un pacchetto regex che contiene diverse classi e metodi. Una di queste classi è una classe Pattern che fornisce un paio di metodi come compile(), quote(), matcher(), ecc. Qui useremo questi metodi per trovare la sottostringa.

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);
  }
}

Produzione:

true
true

Articolo correlato - Java String