Ce face str::replace
replace(din, cu) caută toate aparițiile lui din și creează un String nou cu înlocuirile făcute. Textul original rămâne neschimbat. Căutarea face diferența între litere mari și mici.
replacen(din, cu, n) înlocuiește doar primele n apariții. Modelul poate fi un text, un caracter, o listă de caractere sau o funcție, deci s.replace(char::is_numeric, "#") ascunde toate cifrele.
Parametri
| Parametru | Descriere |
|---|---|
from / pat |
Ce se caută. |
to |
Textul pus în loc (&str; poate fi gol pentru ștergere). |
count |
Doar la replacen: câte apariții se înlocuiesc, de la început. |
Ce returnează
Un String nou.
Exemple
Exemplul 1: Înlocuiri și ștergeri
fn main() {
let s = "Pretul este 10 lei. Pretul nu include TVA.";
println!("{}", s.replace("Pretul", "Prețul"));
println!("{}", s.replacen("Pretul", "Prețul", 1));
println!("{}", "0742-123-456".replace('-', ""));
println!("{}", "PIN: 4821".replace(char::is_numeric, "*"));
}
Rezultat
Prețul este 10 lei. Prețul nu include TVA.
Prețul este 10 lei. Pretul nu include TVA.
0742123456
PIN: ****
Exemplul 2: Corectarea diacriticelor cu sedilă
Textele vechi folosesc s și t cu sedilă (U+015F, U+0163) în loc de ș și ț cu virgulă (U+0219, U+021B). Le înlocuim, scriind codurile cu \u{...}, pentru că cele două variante arată aproape la fel.
fn corecteaza(text: &str) -> String {
text.replace('\u{015F}', "ș")
.replace('\u{0163}', "ț")
.replace('\u{015E}', "Ș")
.replace('\u{0162}', "Ț")
}
fn main() {
let vechi = "Ora\u{015F}ul Bra\u{015F}ov, \u{0162}ara B\u{00E2}rsei";
let nou = corecteaza(vechi);
println!("{nou}");
println!("s-a schimbat ceva: {}", vechi != nou);
}
Rezultat
Orașul Brașov, Țara Bârsei
s-a schimbat ceva: true
Greșeli frecvente
- Apelezi
s.replace(...)fără să folosești rezultatul. Textul original nu se modifică, iar compilatorul avertizează:unused return value of `str::<impl str>::replace` that must be used. - Folosești
replacepentru a schimba bucata de la o poziție anume. Pentru poziții existăreplace_range.
Comenzi înrudite
String::replace_range: Înlocuiește pe loc bucata dintr-un interval de octeți cu alt text (de orice lungime).str::find: Caută prima (find) sau ultima (rfind) apariție și returnează poziția ei în octeți, sau None.String::retain: Păstrează doar caracterele pentru care funcția dată returnează true; restul sunt șterse pe loc.str::matches: Iterator cu toate bucățile din text care se potrivesc cu modelul (fără suprapuneri); util pentru numărare.