CodeBlanks Logo Icon CodeBlanks

replace

replaceWith ve lambda ile değiştirme öğrenirsin.

replace: desene uyan yeri değiştir

replace desene uyan tüm parçaları yeni bir dizeyle değiştirir. İlk parametre bir Regex, ikinci parametre yerine konacak metindir.

val r = Regex("\\d+")
val sonuc = "a1b22c".replace(r, "#")
// "a#b#c"

Rakamları # ile değiştirmek için deseni bir kez yazman yeter. replace eşleşen her yeri sırayla tarar ve yerine yeni metni koyar. Tümünü değil ilkini değiştirmek istersen replaceFirst kullanılır.

replace ile lambda: esnek dönüştürme

Bir lambda vererek her eşleşmeyi ayrı ayrı dönüştürebilirsin. Lambda, bir MatchResult alır ve yerine geçecek dizeyi döndürür.

val r = Regex("\\w+")
val sonuc = "merhaba dunya".replace(r) {
    it.value.replaceFirstChar { c -> c.uppercaseChar() }
}
// "Merhaba Dunya"

Her kelimenin ilk harfini büyük yapmak için replaceFirstChar kullanılır. Sabit metin yerine dönüşüm istediğinde lambda versiyonu seç. Böylece tek geçişte bütün metni biçimlersin.

Uygulama Rakamları # ile değiştir

Regex("\\d+") deseni ile "a1b22c333" dizesindeki rakamları "#" ile değiştir; sonucu yazdır.

Başlangıç kodu

Main.kt
fun main() {
    val r = Regex("\\d+")
    // replace ile rakamları diyez yap ve sonucu yazdır
}

Örnek çözüm

Main.kt
val r = Regex("\\d+")
println("a1b22c333".replace(r, "#"))

Beklenen çıktı

a#b#c

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Boşluğu doldur: rakamları değiştir

Soru
val r = Regex("\\d+")
val sonuc = "a1b2".____(r, "#")
Cevap
val r = Regex("\\d+")
val sonuc = "a1b2".replace(r, "#")

Açıklama: replace tüm eşleşmeleri verilen metinle değiştirir.

2 replace(r) { ... } neyin yerine geçer?

  • Sabit metin ile değiştirme
  • Sabit metin yerine dönüşüm Doğru cevap
  • İlk eşleşmeyi bulma
  • Tüm eşleşmeleri sayma

Açıklama: Lambda her eşleşmeyi ayrı bir metne dönüştürür.

3 Yöntem ve sonucu eşleştir

Kavram Anlamı
replace(r, "#") Tümünü sabitle
replace(r) { ... } Eşleşmeye göre dönüştür
replaceFirst(r, "#") Yalnız ilkini
matches Tümü uyar mı

Başlangıç bölümündeki tüm dersler