String.replace în Kotlin

Înlocuiește toate aparițiile unui text sau caracter cu altul și returnează textul nou.

Sintaxă
fun String.replace(oldValue: String, newValue: String, ignoreCase: Boolean = false): String
fun String.replace(oldChar: Char, newChar: Char, ignoreCase: Boolean = false): String
fun CharSequence.replace(regex: Regex, replacement: String): String

Ce face String.replace

replace(vechi, nou) caută toate aparițiile lui vechi și le înlocuiește cu nou. Textul original rămâne neschimbat; primești un String nou. Cu ignoreCase = true, căutarea nu ține cont de literele mari.

Varianta cu Char înlocuiește caracter cu caracter, iar varianta cu Regex folosește o expresie regulată (vezi Regex.replace). Dacă vrei să înlocuiești doar prima apariție, există replaceFirst.

Parametri

Parametru Descriere
oldValue / oldChar Ce se caută.
newValue / newChar Cu ce se înlocuiește. Un text gol înseamnă ștergere.
ignoreCase Dacă true, nu contează literele mari sau mici.

Ce returnează

Un String nou cu înlocuirile făcute.

Exemple

Exemplul 1: Înlocuire de cuvinte și ștergere

Toate aparițiile sunt înlocuite. Înlocuirea cu text gol șterge spațiile.

fun main() {
    val mesaj = "Trenul de Iași pleacă. Trenul de Cluj întârzie."
    println(mesaj.replace("Trenul", "Autobuzul"))
    println("0722 123 456".replace(" ", ""))
}

Rezultat

Autobuzul de Iași pleacă. Autobuzul de Cluj întârzie.
0722123456

Exemplul 2: Caractere și ignoreCase

Virgula zecimală devine punct, ca să putem converti cu toDouble. Al doilea apel găsește și „LEI”, și „lei”.

fun main() {
    val pret = "12,50".replace(',', '.').toDouble()
    println(pret * 2)
    println("10 LEI și 5 lei".replace("lei", "RON", ignoreCase = true))
}

Rezultat

25.0
10 RON și 5 RON

Exemplul 3: Eliminarea diacriticelor dintr-un slug

Înlocuim pe rând fiecare literă cu diacritice, apoi spațiile cu cratimă.

fun main() {
    val titlu = "Știri din Brașov și Timișoara"
    val inlocuiri = mapOf('ă' to 'a', 'â' to 'a', 'î' to 'i', 'ș' to 's', 'ț' to 't')
    var slug = titlu.lowercase()
    for ((cu, fara) in inlocuiri) {
        slug = slug.replace(cu, fara)
    }
    println(slug.replace(' ', '-'))
}

Rezultat

stiri-din-brasov-si-timisoara

Greșeli frecvente

  • Apelezi text.replace("a", "b") fără să păstrezi rezultatul. String-ul nu se modifică; scrie text = text.replace(...) sau folosește o variabilă nouă.
  • Crezi că replace(".", "") e expresie regulată și șterge tot. Varianta cu String este literală: șterge doar punctele.

Comenzi înrudite

  • Regex.replace: replace înlocuiește toate potrivirile tiparului (cu text fix sau calculat); split taie textul la fiecare potrivire.
  • String.removePrefix: Elimină un prefix de la început, un sufix de la final sau ambele, doar dacă ele chiar există.
  • String.filter: filter păstrează din text doar caracterele care respectă o condiție; count numără caracterele care o respectă.
  • String.trim: trim elimină spațiile albe de la începutul și sfârșitul textului; trimStart doar de la început, trimEnd doar de la final.