Ce face String.substringBefore
substringBefore("@") returnează tot ce este înainte de prima apariție a separatorului. substringAfter("@") returnează tot ce este după prima apariție. substringAfterLast(".") caută ultima apariție, util pentru extensia unui fișier.
Dacă separatorul nu există, funcțiile returnează tot textul. Poți schimba asta cu al doilea argument, missingDelimiterValue, de exemplu un text gol. Există și substringBeforeLast pentru ultima apariție.
Parametri
| Parametru | Descriere |
|---|---|
delimiter |
Separatorul căutat (text sau caracter). |
missingDelimiterValue |
Ce se returnează când separatorul lipsește. Implicit, textul întreg. |
Ce returnează
Un String cu partea cerută.
Exemple
Exemplul 1: Părțile unei adrese de e-mail
Nu avem nevoie de indexOf: funcțiile caută singure separatorul.
fun main() {
val email = "ion.popa@exemplu.ro"
println(email.substringBefore("@"))
println(email.substringAfter("@"))
println(email.substringAfterLast("."))
}
Rezultat
ion.popa
exemplu.ro
ro
Exemplul 2: Extensia și numele unui fișier
Un nume poate avea mai multe puncte; substringAfterLast ia doar ce urmează după ultimul.
fun main() {
val fisiere = listOf("raport.final.pdf", "poza.jpg", "README")
for (f in fisiere) {
val extensie = f.substringAfterLast(".", "fără extensie")
println("$f -> $extensie")
}
}
Rezultat
raport.final.pdf -> pdf
poza.jpg -> jpg
README -> fără extensie
Exemplul 3: Chei și valori dintr-o configurație
Fiecare rând are forma cheie=valoare. Valoarea poate conține și ea =, de aceea folosim substringAfter (prima apariție).
fun main() {
val config = listOf("oras=Iași", "port=8080", "parola=a=b")
for (rand in config) {
val cheie = rand.substringBefore("=")
val valoare = rand.substringAfter("=")
println("$cheie: $valoare")
}
}
Rezultat
oras: Iași
port: 8080
parola: a=b
Greșeli frecvente
- Te aștepți la text gol când separatorul lipsește. Implicit primești tot textul; dă
missingDelimiterValue = ""dacă vrei altceva. - Folosești
substringAfter(".")pentru extensie și obțiifinal.pdflaraport.final.pdf. Pentru ultima parte foloseștesubstringAfterLast.
Comenzi înrudite
String.substring: Returnează bucata de text dintre două poziții: de la startIndex inclusiv până la endIndex exclusiv.String.split: Împarte un text în bucăți după un separator și returnează o listă de String-uri.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.