String.replace în Java

Înlocuiește toate aparițiile unui caracter sau ale unui text cu altul; textul este căutat literal.

Sintaxă
String replace(char vechi, char nou)
String replace(CharSequence tinta, CharSequence inlocuire)   // Java 5

Ce face String.replace

replace(vechi, nou) returnează un șir nou în care toate aparițiile lui vechi sunt înlocuite cu nou. Există două variante: cu caractere ('a', 'b') și cu texte.

Spre deosebire de replaceAll, replace nu folosește expresii regulate: punctul, steluța sau $ sunt căutate exact așa cum le scrii. Pentru înlocuiri simple de text, replace este alegerea corectă, chiar dacă numele sugerează că ar înlocui doar o dată.

Pentru a șterge un text, îl înlocuiești cu șirul gol: s.replace("-", "").

Parametri

Parametru Descriere
vechi / tinta Caracterul sau textul căutat.
nou / inlocuire Ce se pune în loc.

Ce returnează

Un șir nou, cu toate înlocuirile făcute.

Exemple

Exemplul 1: Înlocuiri simple

public class Main {
    public static void main(String[] args) {
        String data = "2024-05-17";
        System.out.println(data.replace('-', '.'));
        System.out.println(data.replace("-", ""));
        String pret = "12.50 lei";
        System.out.println(pret.replace(".", ","));
        System.out.println("Ana are mere, Ana are pere".replace("Ana", "Ioana"));
    }
}

Rezultat

2024.05.17
20240517
12,50 lei
Ioana are mere, Ioana are pere

Exemplul 2: Eliminarea diacriticelor dintr-un nume de fișier

public class Main {
    static String faraDiacritice(String s) {
        return s.replace('ă', 'a').replace('â', 'a').replace('î', 'i')
                .replace('ș', 's').replace('ț', 't')
                .replace('Ă', 'A').replace('Â', 'A').replace('Î', 'I')
                .replace('Ș', 'S').replace('Ț', 'T');
    }

    public static void main(String[] args) {
        String titlu = "Țara mea, Brașov și Mărășești";
        System.out.println(faraDiacritice(titlu).toLowerCase().replace(" ", "-").replace(",", ""));
    }
}

Rezultat

tara-mea-brasov-si-marasesti

Greșeli frecvente

  • Crezi că replace înlocuiește doar prima apariție. Le înlocuiește pe toate; pentru prima folosește replaceFirst.
  • Folosești replaceAll(".", ",") pentru a schimba punctul: înlocuiește fiecare caracter, pentru că punctul este special în expresiile regulate. Folosește replace.

Comenzi înrudite

  • String.replaceAll: Înlocuiește toate (replaceAll) sau doar prima (replaceFirst) potrivire a unei expresii regulate.
  • StringBuilder.replace: replace() înlocuiește caracterele dintre două poziții cu un text nou; indexOf() găsește poziția unui subșir.
  • String.strip: Elimină spațiile de la începutul și sfârșitul șirului; stripLeading/stripTrailing doar dintr-o parte.