str::contains în Rust

Verifică dacă textul conține undeva un text, un caracter sau un caracter care respectă o condiție.

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

Ce face str::contains

contains returnează true dacă modelul apare oriunde în text. Ține cont de litere mari și mici și de diacritice: "Brașov".contains("Brasov") este false.

Dacă ai nevoie și de poziție, folosește find. Pentru a verifica dacă un caracter face parte dintr-o listă, poți întoarce întrebarea: "aeiou".contains(c).

Parametri

Parametru Descriere
pat Textul, caracterul, lista de caractere sau funcția căutată.

Ce returnează

bool.

Exemple

Exemplul 1: Căutare simplă și fără majuscule

fn main() {
    let titlu = "Ghid Rust pentru începători";
    println!("{}", titlu.contains("Rust"));
    println!("{}", titlu.contains("rust"));
    println!("{}", titlu.to_lowercase().contains("rust"));
    println!("are cifre: {}", titlu.contains(|c: char| c.is_ascii_digit()));
}

Rezultat

true
false
true
are cifre: false

Exemplul 2: Verificarea unei parole

fn verifica(parola: &str) -> Vec<&'static str> {
    let mut probleme = Vec::new();
    if parola.chars().count() < 8 { probleme.push("prea scurtă"); }
    if !parola.contains(char::is_uppercase) { probleme.push("fără majusculă"); }
    if !parola.contains(|c: char| c.is_ascii_digit()) { probleme.push("fără cifră"); }
    if parola.contains(' ') { probleme.push("conține spații"); }
    probleme
}

fn main() {
    for p in ["parola", "Parola2026", "Cluj Napoca1"] {
        println!("{p:?}: {:?}", verifica(p));
    }
}

Rezultat

"parola": ["prea scurtă", "fără majusculă", "fără cifră"]
"Parola2026": []
"Cluj Napoca1": ["conține spații"]

Greșeli frecvente

  • Cauți un String fără &: s.contains(cuvant) cu cuvant: String nu compilează. Scrie s.contains(&cuvant) sau s.contains(cuvant.as_str()).

Comenzi înrudite

  • str::find: Caută prima (find) sau ultima (rfind) apariție și returnează poziția ei în octeți, sau None.
  • str::starts_with: Verifică dacă textul începe (starts_with) sau se termină (ends_with) cu un text, un caracter sau o condiție.
  • str::matches: Iterator cu toate bucățile din text care se potrivesc cu modelul (fără suprapuneri); util pentru numărare.