char::is_alphabetic în Rust

Verifică dacă un caracter este literă (is_alphabetic) sau literă ori cifră (is_alphanumeric), după Unicode.

Sintaxă
pub fn is_alphabetic(self) -> bool
pub fn is_alphanumeric(self) -> bool

Ce face char::is_alphabetic

is_alphabetic() returnează true pentru litere din orice alfabet: a, ș, Î, ж, λ. is_alphanumeric() acceptă în plus orice caracter numeric (is_numeric): cifre, dar și ½ sau ².

Dacă vrei strict literele englezești a–z/A–Z (de exemplu pentru un nume de utilizator ASCII), folosește is_ascii_alphabetic() și is_ascii_alphanumeric().

Ce returnează

bool.

Exemple

Exemplul 1: Unicode față de ASCII

fn main() {
    for c in ['a', 'ș', 'Î', 'λ', '7', '½', '_', ' '] {
        println!(
            "{c:?}: alfabetic = {:5}, alfanumeric = {:5}, ascii alfabetic = {}",
            c.is_alphabetic(),
            c.is_alphanumeric(),
            c.is_ascii_alphabetic()
        );
    }
}

Rezultat

'a': alfabetic = true , alfanumeric = true , ascii alfabetic = true
'ș': alfabetic = true , alfanumeric = true , ascii alfabetic = false
'Î': alfabetic = true , alfanumeric = true , ascii alfabetic = false
'λ': alfabetic = true , alfanumeric = true , ascii alfabetic = false
'7': alfabetic = false, alfanumeric = true , ascii alfabetic = false
'½': alfabetic = false, alfanumeric = true , ascii alfabetic = false
'_': alfabetic = false, alfanumeric = false, ascii alfabetic = false
' ': alfabetic = false, alfanumeric = false, ascii alfabetic = false

Exemplul 2: Separarea cuvintelor de punctuație

fn main() {
    let text = "Ce-ai zis? Mâine, la 10, mergem!";
    let cuvinte: Vec<&str> = text
        .split(|c: char| !c.is_alphanumeric())
        .filter(|s| !s.is_empty())
        .collect();
    println!("{cuvinte:?}");
}

Rezultat

["Ce", "ai", "zis", "Mâine", "la", "10", "mergem"]

Greșeli frecvente

  • Validezi numele de persoane cu is_ascii_alphabetic și respingi „Ștefan”. Pentru nume reale folosește is_alphabetic.

Comenzi înrudite

  • char::is_numeric: is_numeric: orice caracter numeric Unicode (inclusiv ½, ², Ⅻ); is_ascii_digit: doar cifrele 0–9.
  • char::is_whitespace: Verifică dacă un caracter este spațiu alb: spațiu, tab, linie nouă sau alt spațiu Unicode.
  • char::is_uppercase: Verifică dacă un caracter este literă mare (is_uppercase) sau literă mică (is_lowercase).
  • String::retain: Păstrează doar caracterele pentru care funcția dată returnează true; restul sunt șterse pe loc.