String.all în Kotlin

all verifică dacă toate caracterele respectă o condiție, any dacă măcar unul o respectă.

Sintaxă
fun CharSequence.all(predicate: (Char) -> Boolean): Boolean
fun CharSequence.any(predicate: (Char) -> Boolean): Boolean
fun CharSequence.none(predicate: (Char) -> Boolean): Boolean

Ce face String.all

text.all { it.isDigit() } returnează true dacă fiecare caracter este cifră. text.any { it.isUpperCase() } returnează true dacă cel puțin un caracter este literă mare. Ambele se opresc imediat ce rezultatul este sigur.

Atenție la textul gol: "".all { ... } este true (nu există niciun caracter care să încalce condiția), iar "".any { ... } este false. Opusul lui any este none.

Parametri

Parametru Descriere
predicate Condiția verificată pentru fiecare caracter.

Ce returnează

Boolean.

Exemple

Exemplul 1: Validarea unui cod poștal

Codul poștal românesc are exact 6 cifre. Verificăm lungimea și faptul că toate caracterele sunt cifre.

fun main() {
    val coduri = listOf("700259", "70025A", "12345")
    for (c in coduri) {
        val valid = c.length == 6 && c.all { it.isDigit() }
        println("$c: ${if (valid) "valid" else "invalid"}")
    }
}

Rezultat

700259: valid
70025A: invalid
12345: invalid

Exemplul 2: Reguli pentru parolă

Fiecare regulă este un any: măcar o literă mare, măcar o cifră, niciun spațiu.

fun main() {
    val parola = "Soare2024"
    println("Literă mare: ${parola.any { it.isUpperCase() }}")
    println("Cifră: ${parola.any { it.isDigit() }}")
    println("Fără spații: ${parola.none { it.isWhitespace() }}")
}

Rezultat

Literă mare: true
Cifră: true
Fără spații: true

Exemplul 3: Textul gol

all pe text gol este true, de aceea validarea de mai sus verifică și lungimea.

fun main() {
    val gol = ""
    println(gol.all { it.isDigit() })
    println(gol.any { it.isDigit() })
}

Rezultat

true
false

Greșeli frecvente

  • Validezi un câmp numai cu all { it.isDigit() }. Un câmp gol trece verificarea; adaugă isNotEmpty().
  • Folosești filter { ... }.isNotEmpty() în loc de any. Rezultatul este același, dar any este mai clar și se oprește mai repede.

Comenzi înrudite

  • String.filter: filter păstrează din text doar caracterele care respectă o condiție; count numără caracterele care o respectă.
  • Char.isDigit: Verifică tipul unui caracter: cifră (isDigit), literă (isLetter), literă sau cifră, spațiu alb (isWhitespace).
  • Iterable.any: any: măcar un element îndeplinește condiția; all: toate o îndeplinesc; none: niciunul nu o îndeplinește.