replace
- Kotlin kursu
- Başlangıç
- Ders 90/116
- 5 dk
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
fun main() {
val r = Regex("\\d+")
// replace ile rakamları diyez yap ve sonucu yazdır
}Örnek çözüm
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
val r = Regex("\\d+")
val sonuc = "a1b2".____(r, "#")
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ı |