Ce face String.replaceRange
replaceRange(start, end, nou) scoate caracterele de la start (inclusiv) până la end (exclusiv) și pune în locul lor textul nou. Este echivalent cu text.substring(0, start) + nou + text.substring(end), dar mai scurt.
Dacă end este null, se înlocuiește tot până la final. Dacă start == end, nu se scoate nimic, doar se inserează textul nou la acea poziție. Pozițiile greșite aruncă RangeError.
Folosește replaceRange când știi pozițiile; când știi textul de înlocuit, folosește replaceAll.
Parametri
| Parametru | Descriere |
|---|---|
start |
Poziția de început. |
end |
Poziția de sfârșit (exclusiv) sau null pentru final. |
replacement |
Textul nou. |
Ce returnează
Un String nou.
Exemple
Exemplul 1: Înlocuire și inserare
void main() {
var text = 'Bună ziua, Ana!';
print(text.replaceRange(11, 14, 'Mihai'));
print(text.replaceRange(0, 4, 'Salut'));
print(text.replaceRange(4, 4, ' de tot'));
print(text.replaceRange(9, null, '.'));
}
Rezultat
Bună ziua, Mihai!
Salut ziua, Ana!
Bună de tot ziua, Ana!
Bună ziua.
Exemplul 2: Ascunderea unui număr de card
Păstrăm doar ultimele 4 cifre și înlocuim restul cu steluțe.
String ascunde(String card) {
var vizibil = 4;
return card.replaceRange(0, card.length - vizibil, '*' * (card.length - vizibil));
}
void main() {
print(ascunde('4111222233334444'));
print(ascunde('0722123456'));
}
Rezultat
************4444
******3456
Greșeli frecvente
- Dai lungimea bucății în loc de poziția de sfârșit. Al doilea argument este poziția, ca la
substring.
Comenzi înrudite
String.substring: substring extrage o bucată din text între două poziții; operatorul [] dă caracterul de la o poziție.String.replaceAll: Înlocuiește toate aparițiile (replaceAll) sau doar prima (replaceFirst) unui text; replaceAllMapped calculează înlocuirea.List.setRange: setRange suprascrie o porțiune a listei cu elemente din altă colecție; List.copyRange copiază dintr-o listă în alta.