Ce face String.replaceAll
replaceAll(vechi, nou) returnează un text nou în care fiecare apariție a lui vechi a fost înlocuită cu nou. replaceFirst înlocuiește doar prima apariție (opțional, începând de la o poziție). Ce cauți poate fi text simplu sau o RegExp.
replaceAllMapped(model, funcție) apelează funcția pentru fiecare potrivire și folosește ce returnează ea ca înlocuire. Funcția primește un Match, din care citești textul găsit cu m[0] și grupurile cu m[1], m[2]. Așa poți, de exemplu, dubla fiecare număr din text.
Spre deosebire de alte limbaje, în textul de înlocuire al lui replaceAll simbolurile $1 nu înseamnă grupuri; pentru grupuri folosește replaceAllMapped.
Parametri
| Parametru | Descriere |
|---|---|
from |
Ce se caută (text sau RegExp). |
replace / to |
Textul pus în loc. |
replace (funcție) |
La replaceAllMapped: funcția care primește potrivirea și returnează înlocuirea. |
Ce returnează
Un String nou.
Exemple
Exemplul 1: Înlocuiri simple
void main() {
var text = 'Ana are mere. Ana are pere.';
print(text.replaceAll('Ana', 'Ioana'));
print(text.replaceFirst('Ana', 'Ioana'));
print(text.replaceFirst('Ana', 'Ioana', 5));
print('0722 123 456'.replaceAll(' ', ''));
print('Ana are mere'.replaceAll(RegExp(r'\s+'), ' '));
}
Rezultat
Ioana are mere. Ioana are pere.
Ioana are mere. Ana are pere.
Ana are mere. Ioana are pere.
0722123456
Ana are mere
Exemplul 2: Eliminarea diacriticelor pentru un URL
String fateDiacritice(String s) {
const inlocuiri = {'ă': 'a', 'â': 'a', 'î': 'i', 'ș': 's', 'ț': 't'};
var rezultat = s.toLowerCase();
inlocuiri.forEach((cu, fara) {
rezultat = rezultat.replaceAll(cu, fara);
});
return rezultat.replaceAll(RegExp(r'[^a-z0-9]+'), '-');
}
void main() {
print(fateDiacritice('Știri din Iași și Brăila'));
print(fateDiacritice('Țară, pâine și înghețată'));
}
Rezultat
stiri-din-iasi-si-braila
tara-paine-si-inghetata
Exemplul 3: Înlocuire calculată cu replaceAllMapped
Mărim toate prețurile cu 10% și schimbăm ordinea datei din AAAA-LL-ZZ în ZZ.LL.AAAA, folosind grupurile.
void main() {
var oferta = 'Cafea 10 lei, ceai 8 lei, prăjitură 15 lei';
var scumpit = oferta.replaceAllMapped(RegExp(r'(\d+) lei'), (m) {
var pret = int.parse(m[1]!) * 1.1;
return '${pret.toStringAsFixed(2)} lei';
});
print(scumpit);
var data = 'Examen: 2026-06-15, restanță: 2026-09-02';
print(data.replaceAllMapped(RegExp(r'(\d{4})-(\d{2})-(\d{2})'), (m) => '${m[3]}.${m[2]}.${m[1]}'));
}
Rezultat
Cafea 11.00 lei, ceai 8.80 lei, prăjitură 16.50 lei
Examen: 15.06.2026, restanță: 02.09.2026
Greșeli frecvente
- Scrii
text.replaceAll(RegExp(r'(\d+)'), '[$1]')și te aștepți la grupul 1. Dart pune textul exact$1(sau dă eroare de interpolare). FoloseștereplaceAllMapped. - Uiți că metoda returnează un text nou și nu schimbă variabila.
Comenzi înrudite
String.replaceRange: Înlocuiește bucata dintre două poziții cu alt text, fără să caute nimic.RegExp: O expresie regulată: un model de text cu care cauți, verifici sau înlocuiești bucăți dintr-un text.String.splitMapJoin: Împarte textul în potriviri și bucăți dintre ele, le transformă separat și le lipește la loc.