str::trim_matches în Rust

Elimină de la ambele capete, în mod repetat, caracterele care se potrivesc cu modelul dat.

Sintaxă
pub fn trim_matches<P>(&self, pat: P) -> &str
where P: Pattern, P::Searcher: DoubleEndedSearcher

Ce face str::trim_matches

trim_matches(pat) scoate de la început și de la final toate caracterele care se potrivesc, oricâte ar fi la rând. Modelul poate fi un char, o listă de caractere (['*', '-']) sau o funcție (|c: char| !c.is_alphanumeric()).

Un text întreg ca model ("ab") nu este acceptat de trim_matches, pentru că nu se poate căuta la fel din ambele direcții. Pentru texte folosește trim_start_matches și trim_end_matches, sau strip_prefix/strip_suffix dacă vrei să scoți o singură dată.

Parametri

Parametru Descriere
pat Ce se elimină: char, [char; N], &[char] sau closure.

Ce returnează

Un &str din textul original.

Exemple

Exemplul 1: Caractere decorative și semne de punctuație

fn main() {
    println!("{}", "***Ofertă***".trim_matches('*'));
    println!("{}", "--== Meniu ==--".trim_matches(['-', '=', ' ']));
    println!("{}", "„Ce zi frumoasă!”".trim_matches(|c: char| !c.is_alphanumeric()));
}

Rezultat

Ofertă
Meniu
Ce zi frumoasă

Exemplul 2: Zerouri la început și text repetat la final

fn main() {
    println!("{}", "000420".trim_start_matches('0'));
    println!("{}", "raport.txt.txt".trim_end_matches(".txt"));
}

Rezultat

420
raport

Greșeli frecvente

  • Scrii s.trim_matches("ab") și primești o eroare de compilare despre DoubleEndedSearcher. Folosește un caracter, o listă de caractere sau variantele trim_start_matches/trim_end_matches.
  • Te aștepți să elimine o singură dată: trim_matches('0') pe "0070" dă "7", nu "070".

Comenzi înrudite

  • str::trim: Elimină spațiile albe de la ambele capete (trim), doar de la început (trim_start) sau doar de la final (trim_end).
  • str::strip_prefix: Scoate o singură dată un prefix (sau sufix) și returnează restul ca Some; dacă textul nu începe cu el, None.
  • String::retain: Păstrează doar caracterele pentru care funcția dată returnează true; restul sunt șterse pe loc.