u8::to_ascii_uppercase în Rust

Octeți: u8 Rust 1.23

Transformă un octet literă ASCII mică în literă mare; orice alt octet rămâne neschimbat.

Sintaxă
const fn to_ascii_uppercase(&self) -> u8
const fn to_ascii_lowercase(&self) -> u8
fn make_ascii_uppercase(&mut self)

Ce face u8::to_ascii_uppercase

b.to_ascii_uppercase() returnează varianta mare a literelor a–z și lasă orice alt octet exact cum este (cifre, semne, octeții caracterelor non-ASCII). to_ascii_lowercase() face invers, iar make_ascii_uppercase() modifică octetul pe loc.

Aceleași metode există pe [u8], str și String (make_ascii_uppercase, to_ascii_uppercase, eq_ignore_ascii_case). Pentru texte românești cu diacritice, folosește to_uppercase() pe str, care cunoaște tot Unicode-ul: ș devine Ș.

Ce returnează

to_ascii_uppercase/to_ascii_lowercase: un u8 nou. make_ascii_uppercase: nimic.

Exemple

Exemplul 1: Octet cu octet

fn main() {
    for b in [b'a', b'Z', b'7', b'-'] {
        println!("{:?} -> {:?}", b as char, b.to_ascii_uppercase() as char);
    }
    let mut cod = *b"ro-is";
    cod.make_ascii_uppercase();
    println!("{}", String::from_utf8_lossy(&cod));
}

Rezultat

'a' -> 'A'
'Z' -> 'Z'
'7' -> '7'
'-' -> '-'
RO-IS

Exemplul 2: Diacriticele rămân neschimbate

Variantele ASCII nu ating literele românești; to_uppercase() pe str le transformă corect.

fn main() {
    let oras = "iași";
    let ascii = String::from_utf8(oras.bytes().map(|b| b.to_ascii_uppercase()).collect()).unwrap();
    println!("ASCII:   {ascii}");
    println!("Unicode: {}", oras.to_uppercase());
    println!("aceleași, fără diferență de litere mari/mici: {}", "IASI".eq_ignore_ascii_case("iasi"));
}

Rezultat

ASCII:   IAșI
Unicode: IAȘI
aceleași, fără diferență de litere mari/mici: true

Greșeli frecvente

  • Folosești to_ascii_uppercase pentru texte în română: ă, â, î, ș, ț rămân mici. Folosește str::to_uppercase().
  • Încerci să faci majuscule scăzând 32 din fiecare octet: strică cifrele, semnele și diacriticele. Metodele ASCII verifică singure dacă octetul este literă.

Comenzi înrudite

  • u8: Întreg fără semn pe 8 biți (0-255): tipul unui octet, folosit pentru date binare și text ASCII/UTF-8.
  • u8::is_ascii_digit: Verifică dacă octetul este o cifră ASCII, de la b’0′ la b’9′.