str::to_uppercase în Rust

Returnează un String nou cu toate literele mari (to_uppercase) sau mici (to_lowercase), după regulile Unicode.

Sintaxă
pub fn to_uppercase(&self) -> String
pub fn to_lowercase(&self) -> String

Ce face str::to_uppercase

Ambele metode cunosc toate alfabetele Unicode, deci ș devine Ș, iar Î devine î. Rezultatul este un String nou; lungimea lui în octeți poate fi diferită de a originalului (de exemplu ß devine SS).

Conversia nu depinde de limba sistemului: nu există reguli speciale pentru turcă sau lituaniană. Dacă textul are doar litere ASCII și vrei viteză maximă, to_ascii_uppercase/to_ascii_lowercase sunt mai simple, dar lasă diacriticele neschimbate.

Ce returnează

Un String nou.

Exemple

Exemplul 1: Diacritice românești

fn main() {
    let s = "Țară, șosea, înălțime";
    println!("{}", s.to_uppercase());
    println!("{}", "ÎNVĂȚĂTOARE".to_lowercase());
    println!("{} -> {}", "straße", "straße".to_uppercase());
}

Rezultat

ȚARĂ, ȘOSEA, ÎNĂLȚIME
învățătoare
straße -> STRASSE

Exemplul 2: Comparare fără majuscule

fn main() {
    let cautat = "brașov";
    let orase = ["Iași", "BRAȘOV", "Brașov", "Brasov"];
    for oras in orase {
        let la_fel = oras.to_lowercase() == cautat;
        println!("{oras}: {la_fel}");
    }
}

Rezultat

Iași: false
BRAȘOV: true
Brașov: true
Brasov: false

Greșeli frecvente

  • Folosești to_ascii_uppercase pe text românesc și diacriticele rămân mici. Pentru text în română folosește to_uppercase.
  • Crezi că metoda schimbă textul pe loc. Returnează un text nou; originalul rămâne.

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::eq_ignore_ascii_case: Compară două texte ignorând diferența dintre literele ASCII mari și mici, fără să creeze texte noi.
  • char::to_uppercase: Transformă un caracter în literă mare sau mică; returnează un iterator, pentru că rezultatul poate avea mai multe caractere.