Ce face String.ifBlank
text.ifBlank { "necunoscut" } returnează text dacă are măcar un caracter vizibil, altfel rezultatul blocului. Blocul se rulează doar când e nevoie. ifEmpty este varianta care reacționează doar la textul gol "", nu și la spații.
orEmpty() se aplică pe un String?: returnează textul, sau "" dacă variabila este null. Este o scurtătură pentru text ?: "". Cele două se combină des: nume.orEmpty().ifBlank { "Anonim" }.
Parametri
| Parametru | Descriere |
|---|---|
defaultValue |
Blocul care dă valoarea folosită când textul este gol. |
Ce returnează
Textul original sau valoarea implicită.
Exemple
Exemplul 1: Valori implicite pentru câmpuri goale
Textul cu spații și textul gol primesc valoarea implicită; „Iași” rămâne.
fun main() {
for (oras in listOf("Iași", " ", "")) {
println("Oraș: ${oras.ifBlank { "nespecificat" }}")
}
}
Rezultat
Oraș: Iași
Oraș: nespecificat
Oraș: nespecificat
Exemplul 2: orEmpty pentru valori null
null devine text gol, așa că putem apela length fără apel sigur.
fun main() {
val porecle: List<String?> = listOf("Ionuț", null, "Mara")
for (p in porecle) {
val text = p.orEmpty()
println("\"$text\" are ${text.length} caractere")
}
}
Rezultat
"Ionuț" are 5 caractere
"" are 0 caractere
"Mara" are 4 caractere
Exemplul 3: ifEmpty față de ifBlank
Un text cu spații nu este gol, deci ifEmpty îl lasă cum este; ifBlank îl înlocuiește.
fun main() {
val spatii = " "
println("[${spatii.ifEmpty { "gol" }}]")
println("[${spatii.ifBlank { "gol" }}]")
val nume: String? = null
println(nume.orEmpty().ifBlank { "Anonim" })
}
Rezultat
[ ]
[gol]
Anonim
Greșeli frecvente
- Scrii
if (text.isBlank()) "implicit" else textpeste tot.ifBlank { "implicit" }face același lucru mai scurt. - Folosești
ifEmptypentru date de la utilizator. Un câmp cu spații trece; foloseșteifBlank.
Comenzi înrudite
String.isEmpty: isEmpty verifică dacă textul nu are niciun caracter; isBlank verifică dacă are doar spații sau e gol.null și null safety (?. ?: !!): null înseamnă „nicio valoare”. Kotlin separă tipurile care acceptă null (String?) și oferă ?., ?: și !! pentru ele.String.trim: trim elimină spațiile albe de la începutul și sfârșitul textului; trimStart doar de la început, trimEnd doar de la final.