String.first în Kotlin

first returnează primul caracter al textului (sau primul care respectă o condiție), last ultimul.

Sintaxă
fun CharSequence.first(): Char
fun CharSequence.first(predicate: (Char) -> Boolean): Char
fun CharSequence.last(): Char
fun CharSequence.firstOrNull(): Char?

Ce face String.first

text.first() este primul caracter, echivalent cu text[0], iar text.last() este ultimul, fără să calculezi length - 1. Cu o condiție, first { it.isDigit() } returnează primul caracter care o respectă.

Pe un text gol, sau când niciun caracter nu respectă condiția, funcțiile aruncă NoSuchElementException. Variantele firstOrNull() și lastOrNull() returnează în schimb null.

Parametri

Parametru Descriere
predicate Opțional: condiția pe care trebuie să o respecte caracterul.

Ce returnează

Un Char (sau Char? pentru variantele OrNull).

Exemple

Exemplul 1: Inițiale

Luăm prima literă din fiecare cuvânt al numelui.

fun main() {
    val nume = "Ana Maria Popescu"
    val initiale = nume.split(" ").map { it.first() }.joinToString("")
    println(initiale)
    println("Ultima literă: ${nume.last()}")
}

Rezultat

AMP
Ultima literă: u

Exemplul 2: Primul caracter care respectă o condiție

Găsim prima cifră și ultima literă mare dintr-un cod.

fun main() {
    val cod = "abc7XY2z"
    println(cod.first { it.isDigit() })
    println(cod.last { it.isUpperCase() })
}

Rezultat

7
Y

Exemplul 3: Text gol fără excepție

firstOrNull returnează null pe textul gol, iar Elvis dă o valoare implicită.

fun main() {
    val raspunsuri = listOf("Da", "", "nu")
    for (r in raspunsuri) {
        val litera = r.firstOrNull()?.uppercaseChar() ?: '-'
        println("\"$r\" -> $litera")
    }
}

Rezultat

"Da" -> D
"" -> -
"nu" -> N

Greșeli frecvente

  • Apelezi first() pe un text care poate fi gol, de exemplu un rând citit. Programul se oprește cu NoSuchElementException; folosește firstOrNull().
  • Compari text.first() == "A". Rezultatul este Char; scrie 'A'.

Comenzi înrudite

  • String.length: length dă numărul de caractere dintr-un text, iar text[i] (get) returnează caracterul de la poziția i.
  • String.take: take ia primele n caractere, takeLast ultimele n, iar drop sare peste primele n și returnează restul.
  • Iterable.first: first/last întorc primul sau ultimul element (sau primul care îndeplinește o condiție); variantele OrNull dau null în loc de excepție.
  • Char.isUpperCase: Verifică dacă un caracter este literă mare sau mică și îl transformă cu uppercaseChar / lowercaseChar.