String.regionMatches în Java

Compară o porțiune din șir cu o porțiune din alt șir, opțional fără să țină cont de literele mari și mici.

Sintaxă
boolean regionMatches(int toffset, String other, int ooffset, int len)
boolean regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len)

Ce face String.regionMatches

regionMatches compară len caractere din șirul curent, începând de la toffset, cu len caractere din other, începând de la ooffset. Nu creează șiruri noi (spre deosebire de substring(...).equals(...)).

Cu primul argument true, comparația ignoră literele mari și mici. Dacă una dintre porțiuni iese din șir, rezultatul este false (nu se aruncă excepție).

Parametri

Parametru Descriere
ignoreCase true pentru a ignora literele mari/mici.
toffset Începutul porțiunii în șirul curent.
other, ooffset Celălalt șir și începutul porțiunii din el.
len Câte caractere se compară.

Ce returnează

true dacă porțiunile sunt egale.

Exemple

Exemplul 1: Compararea unor porțiuni

public class Main {
    public static void main(String[] args) {
        String cod = "RO-IS-2024";
        System.out.println(cod.regionMatches(3, "IS", 0, 2));
        System.out.println(cod.regionMatches(3, "is", 0, 2));
        System.out.println(cod.regionMatches(true, 3, "is", 0, 2));
        System.out.println(cod.regionMatches(6, "anul 2024", 5, 4));
        System.out.println(cod.regionMatches(8, "2024", 0, 4));
    }
}

Rezultat

true
false
true
true
false

Exemplul 2: startsWith fără litere mari/mici

Un prefix verificat fără să ții cont de majuscule, fără a transforma tot șirul.

public class Main {
    static boolean incepeCu(String text, String prefix) {
        return text.regionMatches(true, 0, prefix, 0, prefix.length());
    }

    public static void main(String[] args) {
        System.out.println(incepeCu("HTTPS://dexblog.ro", "https://"));
        System.out.println(incepeCu("ftp://server", "https://"));
        System.out.println(incepeCu("Iași", "IAȘ"));
    }
}

Rezultat

true
false
true

Greșeli frecvente

  • Încurci ordinea argumentelor: primul număr este poziția în șirul curent, al doilea în other.
  • Te aștepți la excepție când porțiunea iese din șir. Metoda returnează simplu false, ceea ce poate ascunde o greșeală de calcul.

Comenzi înrudite

  • String.startsWith: Verifică dacă șirul începe (startsWith) sau se termină (endsWith) cu textul dat.
  • String.equals: Verifică dacă două șiruri au exact același text; equalsIgnoreCase și equalsFoldCase ignoră literele mari/mici.
  • String.substring: Returnează o bucată din șir: de la beginIndex (inclusiv) până la endIndex (exclusiv) sau până la final.