String.replaceRange în Dart

Înlocuiește bucata dintre două poziții cu alt text, fără să caute nimic.

Sintaxă
String replaceRange(int start, int? end, String replacement)

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.