Ce face String::replace_range
replace_range(a..b, "text") șterge octeții de la a la b și pune în locul lor textul dat. Textul nou poate fi mai scurt sau mai lung. Capetele trebuie să fie granițe de caractere, altfel apare panică.
Spre deosebire de replace (care caută un model și returnează un String nou), replace_range lucrează după poziții și modifică textul existent.
Parametri
| Parametru | Descriere |
|---|---|
range |
Intervalul de octeți înlocuit. |
replace_with |
Textul pus în loc. |
Ce returnează
Nimic.
Exemple
Exemplul 1: Mascarea unui CNP
fn main() {
let mut cnp = String::from("1960523221234");
cnp.replace_range(1..9, "********");
println!("{cnp}");
}
Rezultat
1********1234
Exemplul 2: Înlocuirea unui cuvânt găsit cu find
fn main() {
let mut s = String::from("Trenul pleacă din București la 8:15");
let cauta = "București";
if let Some(start) = s.find(cauta) {
s.replace_range(start..start + cauta.len(), "Ploiești");
}
println!("{s}");
}
Rezultat
Trenul pleacă din Ploiești la 8:15
Greșeli frecvente
- Calculezi capătul în litere (
start + 9pentru „București”), dar cuvântul are 10 octeți. Foloseștecauta.len(), care dă octeții.
Comenzi înrudite
str::replace: Returnează un String nou în care aparițiile modelului sunt înlocuite: toate (replace) sau primele count (replacen).String::drain: Scoate din String bucata dintr-un interval de octeți și o returnează ca iterator de caractere.String::insert: Inserează un caracter (insert) sau un text (insert_str) la o poziție dată în octeți.str::find: Caută prima (find) sau ultima (rfind) apariție și returnează poziția ei în octeți, sau None.