String.contains în Kotlin

Verifică dacă un text conține alt text, un caracter sau o potrivire Regex; se poate scrie și cu operatorul in.

Sintaxă
operator fun CharSequence.contains(other: CharSequence, ignoreCase: Boolean = false): Boolean
operator fun CharSequence.contains(char: Char, ignoreCase: Boolean = false): Boolean
operator fun CharSequence.contains(regex: Regex): Boolean

Ce face String.contains

text.contains("Iași") returnează true dacă "Iași" apare oriunde în text. Pentru că este o funcție operator, poți scrie mai natural "Iași" in text; negarea este !in.

Căutarea ține cont de literele mari, dar poți da ignoreCase = true (doar în forma cu apel de funcție). Cu un Regex verifici un tipar, de exemplu dacă textul conține cifre.

Parametri

Parametru Descriere
other / char / regex Ce se caută.
ignoreCase Dacă true, nu contează literele mari sau mici.

Ce returnează

Boolean.

Exemple

Exemplul 1: contains și operatorul in

Cele două forme sunt echivalente. !in înseamnă „nu conține”.

fun main() {
    val adresa = "Str. Lăpușneanu 12, Iași"
    println(adresa.contains("Iași"))
    println("Cluj" in adresa)
    println('@' !in adresa)
}

Rezultat

true
false
true

Exemplul 2: Căutare fără să conteze literele mari

Găsim toate produsele care conțin „lapte”, indiferent cum sunt scrise.

fun main() {
    val produse = listOf("Lapte UHT", "Iaurt", "Ciocolată cu LAPTE", "Pâine")
    val gasite = produse.filter { it.contains("lapte", ignoreCase = true) }
    println(gasite)
}

Rezultat

[Lapte UHT, Ciocolată cu LAPTE]

Exemplul 3: Verificarea unei parole cu Regex

contains(Regex("[0-9]")) verifică dacă există cel puțin o cifră.

fun main() {
    val parole = listOf("soare", "soare2024", "Iasi!")
    for (p in parole) {
        val areCifra = p.contains(Regex("[0-9]"))
        println("$p: ${if (areCifra) "are cifră" else "fără cifre"}")
    }
}

Rezultat

soare: fără cifre
soare2024: are cifră
Iasi!: fără cifre

Greșeli frecvente

  • Scrii "lapte" in text și te aștepți să găsească „Lapte”. Operatorul in ține cont de literele mari; folosește contains(..., ignoreCase = true).
  • Folosești indexOf(x) != -1. Funcționează, dar contains sau in sunt mai clare.

Comenzi înrudite

  • String.indexOf: indexOf returnează poziția primei apariții a unui text sau caracter, lastIndexOf a ultimei; -1 dacă lipsește.
  • String.startsWith: startsWith verifică dacă textul începe cu un prefix, endsWith dacă se termină cu un sufix.
  • Regex: Regex este o expresie regulată (un tipar de text); matches verifică tot textul, containsMatchIn caută o bucată.