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_uppercasepe text românesc și diacriticele rămân mici. Pentru text în română foloseșteto_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.