str::strip_prefix în Rust

Scoate o singură dată un prefix (sau sufix) și returnează restul ca Some; dacă textul nu începe cu el, None.

Sintaxă
pub fn strip_prefix<P: Pattern>(&self, prefix: P) -> Option<&str>
pub fn strip_suffix<P: Pattern>(&self, suffix: P) -> Option<&str>

Ce face str::strip_prefix

strip_prefix("https://") verifică dacă textul începe cu prefixul; dacă da, returnează Some(rest), altfel None. strip_suffix face același lucru la final. Ambele elimină modelul o singură dată, spre deosebire de trim_start_matches.

Pentru că răspund și la întrebarea „începe cu…?”, înlocuiesc combinația starts_with + tăiere manuală. Dacă vrei să păstrezi textul neschimbat când prefixul lipsește, scrie s.strip_prefix(p).unwrap_or(s).

Parametri

Parametru Descriere
prefix / suffix Textul sau caracterul căutat la început / la final.

Ce returnează

Option<&str>: restul textului sau None.

Exemple

Exemplul 1: Comenzi cu prefix

fn main() {
    for mesaj in ["/vreme Iași", "/ajutor", "salut"] {
        if let Some(rest) = mesaj.strip_prefix("/vreme ") {
            println!("caut vremea pentru {rest}");
        } else if let Some(cmd) = mesaj.strip_prefix('/') {
            println!("comandă: {cmd}");
        } else {
            println!("mesaj obișnuit: {mesaj}");
        }
    }
}

Rezultat

caut vremea pentru Iași
comandă: ajutor
mesaj obișnuit: salut

Exemplul 2: Sufix și valoare implicită

fn main() {
    let fisiere = ["poza.jpg", "document.pdf"];
    for f in fisiere {
        let nume = f.strip_suffix(".jpg").unwrap_or(f);
        println!("{f} -> {nume}");
    }
    println!("{:?}", "aaab".strip_prefix('a'));   // doar o dată
}

Rezultat

poza.jpg -> poza
document.pdf -> document.pdf
Some("aab")

Greșeli frecvente

  • Faci &s[7..] după starts_with("http://") și greșești numărul. strip_prefix calculează singur lungimea.

Comenzi înrudite

  • str::starts_with: Verifică dacă textul începe (starts_with) sau se termină (ends_with) cu un text, un caracter sau o condiție.
  • str::trim_matches: Elimină de la ambele capete, în mod repetat, caracterele care se potrivesc cu modelul dat.
  • str::split_once: Taie textul în două la prima apariție a separatorului și returnează perechea, sau None dacă separatorul lipsește.