str::starts_with în Rust

Verifică dacă textul începe (starts_with) sau se termină (ends_with) cu un text, un caracter sau o condiție.

Sintaxă
pub fn starts_with<P: Pattern>(&self, pat: P) -> bool
pub fn ends_with<P: Pattern>(&self, pat: P) -> bool

Ce face str::starts_with

Ambele metode returnează true sau false. Comparația ține cont de litere mari și mici. Modelul poate fi un text, un char, o listă de caractere sau o funcție (char::is_uppercase).

Un text gol ca model se potrivește mereu. Dacă după verificare vrei și restul textului, strip_prefix/strip_suffix fac ambele lucruri deodată.

Parametri

Parametru Descriere
pat Ce se caută la început sau la final.

Ce returnează

bool.

Exemple

Exemplul 1: Filtrarea fișierelor după extensie

fn main() {
    let fisiere = ["raport.pdf", "poza.JPG", "notite.txt", "factura.pdf"];
    let pdf: Vec<&str> = fisiere.iter().copied().filter(|f| f.ends_with(".pdf")).collect();
    println!("{pdf:?}");
    println!("poza.JPG se termină cu .jpg: {}", "poza.JPG".ends_with(".jpg"));
    println!("ignorând mari/mici: {}", "poza.JPG".to_lowercase().ends_with(".jpg"));
}

Rezultat

["raport.pdf", "factura.pdf"]
poza.JPG se termină cu .jpg: false
ignorând mari/mici: true

Exemplul 2: Caractere și condiții

fn main() {
    let tel = "+40742123456";
    println!("prefix internațional: {}", tel.starts_with('+'));
    println!("începe cu majusculă: {}", "Ștefan".starts_with(char::is_uppercase));
    println!("se termină cu cifră: {}", "Sala 12".ends_with(|c: char| c.is_ascii_digit()));
}

Rezultat

prefix internațional: true
începe cu majusculă: true
se termină cu cifră: true

Greșeli frecvente

  • Uiți că verificarea face diferența între litere mari și mici. Transformă ambele părți cu to_lowercase() sau folosește eq_ignore_ascii_case pe bucata potrivită.

Comenzi înrudite

  • str::strip_prefix: Scoate o singură dată un prefix (sau sufix) și returnează restul ca Some; dacă textul nu începe cu el, None.
  • str::contains: Verifică dacă textul conține undeva un text, un caracter sau un caracter care respectă o condiție.
  • str::find: Caută prima (find) sau ultima (rfind) apariție și returnează poziția ei în octeți, sau None.