str::trim în Rust

Elimină spațiile albe de la ambele capete (trim), doar de la început (trim_start) sau doar de la final (trim_end).

Sintaxă
pub fn trim(&self) -> &str
pub fn trim_start(&self) -> &str
pub fn trim_end(&self) -> &str

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 ca s să se schimbe. trim returnează o bucată nouă; salveaz-o: let s = s.trim();.
  • Folosești trim pentru a scoate alte caractere decât spațiile. Pentru asta există trim_matches, strip_prefix și strip_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.