String.startsWith în Kotlin

startsWith verifică dacă textul începe cu un prefix, endsWith dacă se termină cu un sufix.

Sintaxă
fun String.startsWith(prefix: String, ignoreCase: Boolean = false): Boolean
fun String.endsWith(suffix: String, ignoreCase: Boolean = false): Boolean

Ce face String.startsWith

startsWith("07") returnează true dacă primele caractere ale textului sunt exact "07". endsWith(".pdf") verifică finalul textului. Ambele acceptă și un Char și parametrul ignoreCase.

Sunt mai clare și mai sigure decât compararea unei bucăți tăiate cu substring: nu aruncă excepție dacă textul este mai scurt decât prefixul, ci returnează pur și simplu false.

Parametri

Parametru Descriere
prefix / suffix Textul (sau caracterul) căutat la început, respectiv la final.
ignoreCase Dacă true, nu contează literele mari sau mici.

Ce returnează

Boolean.

Exemple

Exemplul 1: Numere de telefon mobil

Numerele de mobil din România încep cu 07.

fun main() {
    val numere = listOf("0722123456", "0232123456", "0745987654")
    for (n in numere) {
        val tip = if (n.startsWith("07")) "mobil" else "fix"
        println("$n: $tip")
    }
}

Rezultat

0722123456: mobil
0232123456: fix
0745987654: mobil

Exemplul 2: Filtrarea fișierelor după extensie

Cu ignoreCase = true, și „SCAN.PDF” este recunoscut.

fun main() {
    val fisiere = listOf("contract.pdf", "poza.jpg", "SCAN.PDF", "notite.txt")
    val pdf = fisiere.filter { it.endsWith(".pdf", ignoreCase = true) }
    println(pdf)
}

Rezultat

[contract.pdf, SCAN.PDF]

Exemplul 3: Comenzi după prefix

Verificăm începutul fiecărui rând ca să alegem acțiunea.

fun main() {
    val comenzi = listOf("/start", "/ajutor", "salut", "/stop")
    for (c in comenzi) {
        when {
            !c.startsWith('/') -> println("$c: mesaj obișnuit")
            c.endsWith("stop") -> println("$c: oprire")
            else -> println("$c: comandă")
        }
    }
}

Rezultat

/start: comandă
/ajutor: comandă
salut: mesaj obișnuit
/stop: oprire

Greșeli frecvente

  • Scrii text.substring(0, 2) == "07". Pe un text de un caracter programul se oprește; startsWith returnează doar false.
  • Uiți că verificarea ține cont de literele mari: "Poza.JPG".endsWith(".jpg") este false fără ignoreCase = true.

Comenzi înrudite

  • String.contains: Verifică dacă un text conține alt text, un caracter sau o potrivire Regex; se poate scrie și cu operatorul in.
  • String.removePrefix: Elimină un prefix de la început, un sufix de la final sau ambele, doar dacă ele chiar există.
  • File.extension: extension dă partea de după ultimul punct din numele fișierului; nameWithoutExtension dă numele fără ea.