Ce face Regex.replace
regex.replace(text, "nou") înlocuiește fiecare bucată potrivită cu textul dat. În textul de înlocuire, $1, $2 înseamnă grupurile din paranteze ale tiparului; pentru un $ literal scrie \$. Varianta cu lambda primește fiecare MatchResult și calculează înlocuirea.
regex.split(text) taie textul în bucăți acolo unde se potrivește tiparul, la fel ca String.split, dar cu separator flexibil. Același lucru se poate scrie și ca text.split(regex) sau text.replace(regex, ...).
Parametri
| Parametru | Descriere |
|---|---|
input |
Textul prelucrat. |
replacement / transform |
Textul de înlocuire (cu $1 pentru grupuri) sau funcția care îl calculează. |
limit |
Pentru split: numărul maxim de bucăți (0 = fără limită). |
Ce returnează
replace: un String nou. split: o List<String>.
Exemple
Exemplul 1: Spații multiple și ascunderea cifrelor
Primul apel reduce orice grup de spații la unul singur. Al doilea înlocuiește fiecare cifră cu *.
fun main() {
println(Regex("""\s+""").replace("Bună ziua, Ana", " "))
println(Regex("""\d""").replace("Card: 4111 2222", "*"))
}
Rezultat
Bună ziua, Ana
Card: **** ****
Exemplul 2: Grupuri și înlocuire calculată
$3.$2.$1 rearanjează data din format ISO. Lambda dublează fiecare preț găsit.
fun main() {
val data = Regex("""(\d{4})-(\d{2})-(\d{2})""")
println(data.replace("Livrare: 2025-03-15", "$3.$2.$1"))
val pret = Regex("""\d+""")
println(pret.replace("pâine 5 lei, lapte 7 lei") { (it.value.toInt() * 2).toString() })
}
Rezultat
Livrare: 15.03.2025
pâine 10 lei, lapte 14 lei
Exemplul 3: split după mai mulți separatori
Tiparul acceptă virgulă, punct și virgulă sau bară, cu spații opționale în jur.
fun main() {
val separatori = Regex("""\s*[,;|]\s*""")
println(separatori.split("Iași , Cluj;Timișoara | Brașov"))
}
Rezultat
[Iași, Cluj, Timișoara, Brașov]
Greșeli frecvente
- Scrii un preț în textul de înlocuire:
replace(text, "$5").$5este citit ca grupul 5 și apare o eroare; scrie"\\$5"sau folosește varianta cu lambda. - Folosești
String.replace("\\s+", " ")cu un String și nu se întâmplă nimic. Pentru tipar trebuie unRegex.
Comenzi înrudite
String.replace: Înlocuiește toate aparițiile unui text sau caracter cu altul și returnează textul nou.String.split: Împarte un text în bucăți după un separator și returnează o listă de String-uri.Regex.find: find returnează prima potrivire a tiparului în text (sau null), findAll toate potrivirile; value este textul găsit.MatchResult.groupValues: groupValues dă textele prinse de parantezele din tipar; destructured le pune direct în variabile.