String.ifBlank în Kotlin

Text: conversii și formatare Kotlin 1.3 (orEmpty: 1.0)

ifBlank înlocuiește un text gol sau doar cu spații cu o valoare implicită; orEmpty transformă null în "".

Sintaxă
inline fun <C : CharSequence, R> C.ifBlank(defaultValue: () -> R): R where C : R
inline fun <C : CharSequence, R> C.ifEmpty(defaultValue: () -> R): R where C : R
fun String?.orEmpty(): String

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 text peste tot. ifBlank { "implicit" } face același lucru mai scurt.
  • Folosești ifEmpty pentru date de la utilizator. Un câmp cu spații trece; folosește ifBlank.

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.