Ce face str::trim
trim() returnează o bucată din textul original fără spațiile albe de la capete: spațiu, \t, \n, \r și celelalte spații Unicode. Nu copiază nimic și nu modifică textul inițial; rezultatul trebuie folosit sau salvat.
trim_start() curăță doar începutul, trim_end() doar finalul. „Început” și „final” se referă la ordinea octeților, deci pentru texte de la dreapta la stânga (arabă, ebraică) sensul vizual este invers. Spațiile din mijlocul textului rămân.
Cel mai des folosești trim() după read_line, care păstrează \n-ul de la final: fără el, parse() eșuează.
Ce returnează
Un &str care împrumută din textul original.
Exemple
Exemplul 1: Cele trei variante
fn main() {
let s = " \t Ploiești \n";
println!("trim: {:?}", s.trim());
println!("trim_start: {:?}", s.trim_start());
println!("trim_end: {:?}", s.trim_end());
}
Rezultat
trim: "Ploiești"
trim_start: "Ploiești \n"
trim_end: " \t Ploiești"
Exemplul 2: Citirea unui număr de la tastatură
Linia citită conține și \n. Fără trim(), parse ar da eroarea invalid digit found in string.
use std::io;
fn main() {
let mut linie = String::new();
io::stdin().read_line(&mut linie).unwrap();
println!("citit: {:?}", linie);
println!("fără trim: {:?}", linie.parse::<u32>());
let varsta: u32 = linie.trim().parse().unwrap();
println!("peste 10 ani vei avea {} ani", varsta + 10);
}
Ce scrie utilizatorul (intrare)
28
Rezultat
citit: "28\n"
fără trim: Err(ParseIntError { kind: InvalidDigit })
peste 10 ani vei avea 38 ani
Greșeli frecvente
- Apelezi
s.trim();și te aștepți cassă se schimbe.trimreturnează o bucată nouă; salveaz-o:let s = s.trim();. - Folosești
trimpentru a scoate alte caractere decât spațiile. Pentru asta existătrim_matches,strip_prefixșistrip_suffix.
Comenzi înrudite
str::trim_matches: Elimină de la ambele capete, în mod repetat, caracterele care se potrivesc cu modelul dat.str::strip_prefix: Scoate o singură dată un prefix (sau sufix) și returnează restul ca Some; dacă textul nu începe cu el, None.str::parse: Transformă textul într-o altă valoare (număr, bool, char, IP, tip propriu) și returnează Result.str::split_whitespace: Împarte textul în cuvinte, la orice spațiu alb (spații, tab, linie nouă), fără bucăți goale.