Ce face String.lines
lines() taie textul la fiecare sfârșit de rând și returnează o listă de rânduri, fără caracterele de rând nou. Recunoaște toate formele: \n (Linux, macOS), \r\n (Windows) și \r, așa că este mai sigur decât split("\n").
Dacă textul se termină cu un rând nou, ultimul element al listei este un text gol. Rândurile goale din interior se păstrează și ele; le poți elimina cu filter { it.isNotBlank() }.
Ce returnează
O List<String> cu rândurile.
Exemple
Exemplul 1: Rândurile unui text
Fiecare rând primește un număr; withIndex dă poziția și valoarea.
fun main() {
val poezie = "Pe lângă plopii fără soț\nAdesea am trecut;\nMă cunoșteau vecinii toți"
for ((i, rand) in poezie.lines().withIndex()) {
println("${i + 1}: $rand")
}
}
Rezultat
1: Pe lângă plopii fără soț
2: Adesea am trecut;
3: Mă cunoșteau vecinii toți
Exemplul 2: Rânduri de tip Windows și rândul gol de la final
\r\n este recunoscut corect. Textul se termină cu rând nou, deci ultimul element este gol.
fun main() {
val text = "Ana\r\nIon\r\nMaria\n"
val randuri = text.lines()
println(randuri.size)
println(randuri)
println(randuri.filter { it.isNotEmpty() })
}
Rezultat
4
[Ana, Ion, Maria, ]
[Ana, Ion, Maria]
Exemplul 3: Totalul unei liste de cumpărături
Fiecare rând are forma „produs preț”; luăm prețul cu substringAfter și îl adunăm.
fun main() {
val bon = "pâine 4.50\nlapte 7.20\nbrânză 18.30"
val total = bon.lines().sumOf { it.substringAfter(" ").toDouble() }
println("Total: $total lei")
}
Rezultat
Total: 30.0 lei
Greșeli frecvente
- Folosești
split("\n")pe un text venit din Windows și rămâi cu\rla finalul fiecărui rând.lines()tratează corect toate variantele. - Nu ții cont de rândul gol de la final și o conversie
toInt()eșuează pe el. Filtrează rândurile goale înainte.
Comenzi înrudite
String.split: Împarte un text în bucăți după un separator și returnează o listă de String-uri.String.trimIndent: Elimină indentarea comună din textele pe mai multe rânduri scrise cu „”” … „”” în cod.File.readLines: Citește un fișier text și returnează lista rândurilor, fără caracterele de rând nou.