Char.isDigit în Kotlin

Caractere (Char) Kotlin 1.0

Verifică tipul unui caracter: cifră (isDigit), literă (isLetter), literă sau cifră, spațiu alb (isWhitespace).

Sintaxă
fun Char.isDigit(): Boolean
fun Char.isLetter(): Boolean
fun Char.isLetterOrDigit(): Boolean
fun Char.isWhitespace(): Boolean

Ce face Char.isDigit

Un Char este un singur caracter, scris între ghilimele simple: 'a', '7', ' '. Funcțiile acestea îți spun ce fel de caracter este: isDigit() pentru cifre, isLetter() pentru litere (inclusiv ă, î, ș, ț), isLetterOrDigit() pentru oricare dintre ele, isWhitespace() pentru spații, tab-uri și rânduri noi.

Verificările folosesc standardul Unicode, deci funcționează și pentru litere din alte alfabete. Le folosești de obicei în filter, all, any sau count, pentru a valida ori curăța un text caracter cu caracter.

Ce returnează

Boolean.

Exemple

Exemplul 1: Ce fel de caracter este

Literele cu diacritice sunt recunoscute ca litere; semnul - nu este nici literă, nici cifră.

fun main() {
    for (c in listOf('a', 'Ș', '7', ' ', '-', '\t')) {
        println("'$c': cifră=${c.isDigit()}, literă=${c.isLetter()}, literă/cifră=${c.isLetterOrDigit()}, spațiu=${c.isWhitespace()}")
    }
}

Rezultat

'a': cifră=false, literă=true, literă/cifră=true, spațiu=false
'Ș': cifră=false, literă=true, literă/cifră=true, spațiu=false
'7': cifră=true, literă=false, literă/cifră=true, spațiu=false
' ': cifră=false, literă=false, literă/cifră=false, spațiu=true
'-': cifră=false, literă=false, literă/cifră=false, spațiu=false
'	': cifră=false, literă=false, literă/cifră=false, spațiu=true

Exemplul 2: Statistica unui text

Numărăm cu count literele, cifrele și spațiile dintr-o adresă.

fun main() {
    val adresa = "Str. Ștefan cel Mare 24, ap. 5"
    println("Litere: ${adresa.count { it.isLetter() }}")
    println("Cifre: ${adresa.count { it.isDigit() }}")
    println("Spații: ${adresa.count { it.isWhitespace() }}")
    println("Altele: ${adresa.count { !it.isLetterOrDigit() && !it.isWhitespace() }}")
}

Rezultat

Litere: 18
Cifre: 3
Spații: 6
Altele: 3

Exemplul 3: Validarea unui nume de utilizator

Numele trebuie să înceapă cu literă și să conțină doar litere, cifre sau _.

fun esteValid(nume: String): Boolean =
    nume.isNotEmpty() && nume[0].isLetter() && nume.all { it.isLetterOrDigit() || it == '_' }

fun main() {
    for (n in listOf("ana_93", "9ion", "maria pop", "ștefan")) {
        println("$n: ${esteValid(n)}")
    }
}

Rezultat

ana_93: true
9ion: false
maria pop: false
ștefan: true

Greșeli frecvente

  • Verifici cifre cu c in '0'..'9' și literele cu c in 'a'..'z'. Intervalul de litere ratează literele mari și diacriticele; isLetter() le include.
  • Apelezi isDigit() pe un String. Funcția este pentru un Char; pentru tot textul folosește text.all { it.isDigit() }.

Comenzi înrudite

  • Char.isUpperCase: Verifică dacă un caracter este literă mare sau mică și îl transformă cu uppercaseChar / lowercaseChar.
  • Char.digitToInt: digitToInt transformă caracterul ‘7’ în numărul 7; code dă codul Unicode al caracterului (‘A’.code este 65).
  • String.filter: filter păstrează din text doar caracterele care respectă o condiție; count numără caracterele care o respectă.
  • String.all: all verifică dacă toate caracterele respectă o condiție, any dacă măcar unul o respectă.