str::eq_ignore_ascii_case în Rust

Compară două texte ignorând diferența dintre literele ASCII mari și mici, fără să creeze texte noi.

Sintaxă
pub fn eq_ignore_ascii_case(&self, other: &str) -> bool

Ce face str::eq_ignore_ascii_case

a.eq_ignore_ascii_case(b) este echivalent cu a.to_ascii_lowercase() == b.to_ascii_lowercase(), dar nu alocă memorie. Doar literele A–Z și a–z sunt considerate egale între ele; Ș și ș rămân diferite.

Este ideală pentru comparații tehnice: extensii ("JPG"/"jpg"), comenzi tastate de utilizator în engleză, nume de anteturi HTTP. Pentru text în română, compară rezultatele lui to_lowercase().

Parametri

Parametru Descriere
other Textul cu care se compară.

Ce returnează

bool.

Exemple

Exemplul 1: Extensii și comenzi

fn main() {
    println!("{}", "JPG".eq_ignore_ascii_case("jpg"));
    println!("{}", "Content-Type".eq_ignore_ascii_case("content-type"));
    println!("{}", "ȘTEFAN".eq_ignore_ascii_case("ștefan"));
    println!("{}", "ȘTEFAN".to_lowercase() == "ștefan".to_lowercase());
}

Rezultat

true
true
false
true

Exemplul 2: Răspuns da/nu de la tastatură

use std::io;

fn main() {
    let mut raspuns = String::new();
    io::stdin().read_line(&mut raspuns).unwrap();
    let raspuns = raspuns.trim();
    if raspuns.eq_ignore_ascii_case("da") || raspuns.eq_ignore_ascii_case("y") {
        println!("Continuăm.");
    } else {
        println!("Anulat.");
    }
}

Ce scrie utilizatorul (intrare)

DA

Rezultat

Continuăm.

Greșeli frecvente

  • Te bazezi pe ea pentru cuvinte cu diacritice: "ÎN".eq_ignore_ascii_case("în") este false.

Comenzi înrudite

  • str::to_ascii_uppercase: Returnează o copie în care doar literele ASCII a-z devin mari; diacriticele și alte caractere rămân neschimbate.
  • str::to_uppercase: Returnează un String nou cu toate literele mari (to_uppercase) sau mici (to_lowercase), după regulile Unicode.
  • PartialEq: Trait-ul din spatele operatorilor == și !=; derive compară toate câmpurile, implementarea manuală alege criteriul.