Character.isLetter în Java

Verifică dacă un caracter este literă, cifră sau oricare dintre ele, după regulile Unicode.

Sintaxă
static boolean isLetter(char c)
static boolean isDigit(char c)
static boolean isLetterOrDigit(char c)

Ce face Character.isLetter

isLetter(c) returnează true pentru orice literă din orice alfabet: a, Ș, ă, litere grecești sau chirilice. isDigit(c) recunoaște cifrele 0–9 și cifrele din alte scrieri (de exemplu cele arabe). isLetterOrDigit(c) este adevărat dacă oricare dintre primele două este adevărată.

Spațiile, semnele de punctuație, _ și simbolurile ca @ nu sunt nici litere, nici cifre. Toate cele trei metode au și o variantă cu int codePoint, pentru caracterele care nu încap într-un char.

Parametri

Parametru Descriere
c Caracterul verificat.

Ce returnează

true sau false.

Exemple

Exemplul 1: Clasificarea caracterelor

public class Main {
    public static void main(String[] args) {
        String text = "Ș3 a_@ă";
        for (char c : text.toCharArray()) {
            System.out.println("'" + c + "' literă=" + Character.isLetter(c)
                    + " cifră=" + Character.isDigit(c)
                    + " literă/cifră=" + Character.isLetterOrDigit(c));
        }
    }
}

Rezultat

'Ș' literă=true cifră=false literă/cifră=true
'3' literă=false cifră=true literă/cifră=true
' ' literă=false cifră=false literă/cifră=false
'a' literă=true cifră=false literă/cifră=true
'_' literă=false cifră=false literă/cifră=false
'@' literă=false cifră=false literă/cifră=false
'ă' literă=true cifră=false literă/cifră=true

Exemplul 2: Numărarea literelor și cifrelor dintr-o adresă

public class Main {
    public static void main(String[] args) {
        String adresa = "Str. Ștefan cel Mare nr. 12, Iași";
        int litere = 0;
        int cifre = 0;
        for (char c : adresa.toCharArray()) {
            if (Character.isLetter(c)) {
                litere++;
            } else if (Character.isDigit(c)) {
                cifre++;
            }
        }
        System.out.println("Litere: " + litere + ", cifre: " + cifre);
    }
}

Rezultat

Litere: 22, cifre: 2

Exemplul 3: Validarea unui nume de utilizator

Acceptăm doar litere și cifre, iar primul caracter trebuie să fie literă.

public class Main {
    static boolean valid(String user) {
        if (user.isEmpty() || !Character.isLetter(user.charAt(0))) {
            return false;
        }
        for (char c : user.toCharArray()) {
            if (!Character.isLetterOrDigit(c)) {
                return false;
            }
        }
        return true;
    }

    public static void main(String[] args) {
        for (String u : new String[] {"ana2026", "2ana", "ion.pop", "Mădălina"}) {
            System.out.println(u + ": " + valid(u));
        }
    }
}

Rezultat

ana2026: true
2ana: false
ion.pop: false
Mădălina: true

Greșeli frecvente

  • Verifici literele cu c >= 'a' && c <= 'z': diacriticele românești (ă, î, ș, ț) nu trec. Character.isLetter le acceptă.
  • Crezi că isDigit acceptă numai 0–9: acceptă și cifre din alte scrieri, care trec apoi de verificare dar nu sunt înțelese de toate funcțiile. Pentru date stricte, verifică c >= '0' && c <= '9'.

Comenzi înrudite

  • Character: Clasa wrapper pentru tipul char, cu metode statice care verifică și transformă caractere (litere, cifre, spații).
  • Character.isWhitespace: Verifică dacă un caracter este spațiu alb: spațiu, tab, rând nou sau alt separator Unicode.
  • Character.isUpperCase: Verifică dacă un caracter este literă mare (isUpperCase) sau literă mică (isLowerCase).
  • String.matches: Verifică dacă ÎNTREGUL șir se potrivește cu o expresie regulată (validare de formate).