Ce face String.split
split(",") taie textul în fiecare loc unde apare separatorul și returnează bucățile într-o List<String>. Separatorul nu apare în rezultat. Poți da mai mulți separatori deodată: split(",", ";").
Spre deosebire de Java, separatorul de tip String este luat literal, nu ca expresie regulată: split(".") taie după punct. Pentru o expresie regulată, dă un obiect Regex: split(Regex("\\s+")) taie după oricâte spații.
Parametrul limit oprește împărțirea după un număr de bucăți: ultima bucată conține restul textului. Bucățile goale (de exemplu între două virgule alăturate) se păstrează.
Parametri
| Parametru | Descriere |
|---|---|
delimiters |
Unul sau mai mulți separatori (text sau caractere). |
ignoreCase |
Dacă true, separatorul se caută fără să conteze literele mari. |
limit |
Numărul maxim de bucăți; 0 înseamnă fără limită. |
Ce returnează
O List<String> cu bucățile.
Exemple
Exemplul 1: Un rând CSV
Textul este tăiat după virgulă, iar cu destructurare luăm direct cele trei valori.
fun main() {
val rand = "Ana,Iași,9.50"
val parti = rand.split(",")
println(parti)
val (nume, oras, media) = parti
println("$nume din $oras are media $media")
}
Rezultat
[Ana, Iași, 9.50]
Ana din Iași are media 9.50
Exemplul 2: Mai mulți separatori și limit
Primul apel taie după virgulă și punct și virgulă. Al doilea se oprește la 2 bucăți, deci restul textului rămâne împreună.
fun main() {
println("mere,pere;prune,caise".split(",", ";"))
println("cheie=valoare=cu egal".split("=", limit = 2))
println("a,,b".split(","))
}
Rezultat
[mere, pere, prune, caise]
[cheie, valoare=cu egal]
[a, , b]
Exemplul 3: Cuvinte separate de oricâte spații
Cu Regex("\\s+"), mai multe spații la rând contează ca un singur separator.
fun main() {
val text = "Bună ziua, dragă Ana"
val cuvinte = text.split(Regex("\\s+"))
println(cuvinte)
println("Număr de cuvinte: ${cuvinte.size}")
}
Rezultat
[Bună, ziua,, dragă, Ana]
Număr de cuvinte: 4
Greșeli frecvente
- Scrii
split("\\s+")și aștepți o expresie regulată. UnStringeste separator literal; puneRegex("\\s+"). - Uiți că bucățile pot avea spații:
"a, b".split(",")dă[a, b]. Adaugă.map { it.trim() }. - Destructurezi mai multe variabile decât bucăți există.
val (a, b, c) = "x,y".split(",")aruncăIndexOutOfBoundsException.
Comenzi înrudite
String.lines: Împarte textul în rânduri, după orice tip de rând nou (\n, \r\n sau \r), și returnează lista lor.Regex.replace: replace înlocuiește toate potrivirile tiparului (cu text fix sau calculat); split taie textul la fiecare potrivire.String.chunked: chunked taie textul în bucăți de lungime fixă; windowed ia „ferestre” care se pot suprapune.String.substringBefore: Returnează partea de text dinaintea sau de după un separator, fără să calculezi poziții.