String.commonPrefixWith în Kotlin

Returnează cel mai lung început comun al două texte; commonSuffixWith face același lucru pentru final.

Sintaxă
fun CharSequence.commonPrefixWith(other: CharSequence, ignoreCase: Boolean = false): String
fun CharSequence.commonSuffixWith(other: CharSequence, ignoreCase: Boolean = false): String

Ce face String.commonPrefixWith

"Constanța".commonPrefixWith("Constantin") returnează "Constan", adică partea de la început care este identică în ambele texte. Dacă textele încep diferit, rezultatul este textul gol.

commonSuffixWith caută partea comună de la final. Ambele au ignoreCase. Sunt utile pentru completare automată, pentru găsirea folderului comun al mai multor căi sau pentru a compara coduri.

Parametri

Parametru Descriere
other Al doilea text.
ignoreCase Dacă true, nu contează literele mari sau mici.

Ce returnează

Un String cu partea comună (poate fi gol).

Exemple

Exemplul 1: Începuturi și finaluri comune

Al treilea apel dă textul gol, pentru că literele diferă de la început.

fun main() {
    println("Constanța".commonPrefixWith("Constantin"))
    println("Brașov".commonPrefixWith("BRAȘOV", ignoreCase = true))
    println("Iași".commonPrefixWith("Cluj"))
    println("cântare".commonSuffixWith("plimbare"))
}

Rezultat

Constan
Brașov

are

Exemplul 2: Folderul comun al unor fișiere

Calculăm prefixul comun al tuturor căilor cu reduce, apoi tăiem până la ultimul /.

fun main() {
    val cai = listOf(
        "/home/ana/proiect/src/main.kt",
        "/home/ana/proiect/src/util.kt",
        "/home/ana/proiect/README.md",
    )
    val prefix = cai.reduce { a, b -> a.commonPrefixWith(b) }
    println(prefix)
    println(prefix.substringBeforeLast("/"))
}

Rezultat

/home/ana/proiect/
/home/ana/proiect

Exemplul 3: Completare automată

Dacă toate orașele care se potrivesc au un început comun mai lung, îl completăm automat.

fun main() {
    val orase = listOf("Bistrița", "București", "Bucureștii Noi", "Buzău", "Brașov")
    val scris = "Buc"
    val potriviri = orase.filter { it.startsWith(scris) }
    val completare = potriviri.reduce { a, b -> a.commonPrefixWith(b) }
    println("Potriviri: $potriviri")
    println("Completare: $completare")
}

Rezultat

Potriviri: [București, Bucureștii Noi]
Completare: București

Greșeli frecvente

  • Aștepți ca funcția să găsească o parte comună oriunde în text. Ea compară doar de la început (sau de la final pentru commonSuffixWith).

Comenzi înrudite

  • String.startsWith: startsWith verifică dacă textul începe cu un prefix, endsWith dacă se termină cu un sufix.
  • String.substringBefore: Returnează partea de text dinaintea sau de după un separator, fără să calculezi poziții.
  • String.equals: equals compară două texte (opțional fără să conteze literele mari); compareTo le compară alfabetic.