String İşlemleri
BERK'te string işlemleri güvenli, hızlı ve kullanışlıdır. UTF-8 desteği, zengin stdlib API'si ve zero-copy operasyonlar.
String Oluşturma
Literal Stringler
değişken isim = "Ali"
değişken mesaj = "Merhaba Dünya!"
değişken çok_satırlı = """
Bu bir
çok satırlı
string'dir
"""
Escape Karakterleri
değişken yeni_satır = "Satır 1\nSatır 2"
değişken tab = "Kolon\tDeğer"
değişken tırnak = "O dedi: \"Merhaba\""
değişken unicode = "\u{1F600}" // 😀
Temel İşlemler
Birleştirme (Concatenation)
değişken ad = "Ali"
değişken soyad = "Yılmaz"
// + operatörü
değişken tam_ad = ad + " " + soyad
// format! makrosu
değişken mesaj = format!("Merhaba {}, yaşınız {}.", isim, yaş)
Uzunluk ve Boş Kontrol
değişken s = "Merhaba"
yazdır(s.uzunluk()) // 7
yazdır(s.boş_mu()) // yanlış
yazdır(s.karakter_sayısı()) // UTF-8 karakter sayısı
String Modülü Fonksiyonları
Büyük/Küçük Harf Dönüşümü
kullan string;
değişken metin = "Merhaba Dünya"
yazdır(string::büyüt(metin)) // "MERHABA DÜNYA"
yazdır(string::küçült(metin)) // "merhaba dünya"
yazdır(string::baş_harfi_büyüt(metin)) // "Merhaba dünya"
Trim ve Pad
değişken s = " merhaba "
yazdır(string::trim(s)) // "merhaba"
yazdır(string::trim_start(s)) // "merhaba "
yazdır(string::trim_end(s)) // " merhaba"
değişken x = "42"
yazdır(string::pad_left(x, 5, '0')) // "00042"
Bölme (Split)
değişken metin = "elma,armut,muz"
değişken parçalar = string::böl(metin, ",")
// ["elma", "armut", "muz"]
// Satırlara böl
değişken çok_satır = "Satır 1\nSatır 2\nSatır 3"
değişken satırlar = string::satırlara_böl(çok_satır)
Değiştir (Replace)
değişken metin = "Merhaba Dünya"
değişken yeni = string::değiştir(metin, "Dünya", "BERK")
yazdır(yeni) // "Merhaba BERK"
// Tüm oluşumları değiştir
değişken s = "test test test"
yazdır(string::değiştir_tümü(s, "test", "deneme"))
Arama ve Kontrol
İçerir (Contains)
değişken metin = "Merhaba Dünya"
yazdır(string::içerir(metin, "Dünya")) // doğru
yazdır(string::içerir(metin, "Java")) // yanlış
Başlar ve Biter
değişken dosya = "resim.png"
yazdır(string::ile_başlar(dosya, "resim")) // doğru
yazdır(string::ile_biter(dosya, ".png")) // doğru
Bul (Find)
değişken metin = "Merhaba Dünya"
değişken index = string::bul(metin, "Dünya")
eşleştir index yap
Bir(i) => yazdır("Bulundu: " + i),
Hiçbiri => yazdır("Bulunamadı")
son
String Formatla
// Basit interpolasyon
değişken isim = "Ali"
değişken yaş = 25
değişken mesaj = format!("İsim: {}, Yaş: {}", isim, yaş)
// İsimlendirilmiş parametreler
değişken m = format!("x: {x}, y: {y}", x: 10, y: 20)
// Sayı formatlama
değişken pi = 3.14159
yazdır(format!("Pi: {:.2}", pi)) // "Pi: 3.14"
Unicode ve UTF-8
Karakter İterasyonu
değişken metin = "Merhaba 🌍"
için karakter içinde string::karakterler(metin) yap
yazdır(karakter)
son
// Byte iterasyonu
için byte içinde string::byte_lar(metin) yap
yazdır(byte)
son
Türkçe Karakter Desteği
değişken türkçe = "çalışma ığğöüş"
yazdır(string::büyüt(türkçe)) // "ÇALIŞMA IĞĞÖÜŞ"
yazdır(türkçe.uzunluk()) // Doğru byte sayısı
yazdır(türkçe.karakter_sayısı()) // Görünen karakter sayısı
Regex Desteği
kullan regex::Regex;
değişken re = Regex::yeni(r"\d{3}-\d{4}")
değişken telefon = "555-1234"
eğer re.eşleşir(telefon) yap
yazdır("Geçerli telefon")
son
// Tüm eşleşmeleri bul
değişken metin = "Email: ali@test.com ve ayse@test.com"
değişken re2 = Regex::yeni(r"[a-z]+@[a-z]+\.[a-z]+")
için eşleşme içinde re2.tüm_eşleşmeler(metin) yap
yazdır(eşleşme)
son
String Builder
Verimli string birleştirme için:
kullan string::StringBuilder;
değişken sb = StringBuilder::yeni()
sb.ekle("Merhaba")
sb.ekle(" ")
sb.ekle("Dünya")
sb.ekle_satır("!")
değişken sonuç = sb.inşa_et()
yazdır(sonuç) // "Merhaba Dünya!\n"
Performans İpuçları
-
✅ StringBuilder kullan (çoklu birleştirmeler için)
// ❌ Yavaş değişken s = "" için i içinde 0..1000 yap s += "x" son // ✅ Hızlı değişken sb = StringBuilder::yeni() için i içinde 0..1000 yap sb.ekle("x") son -
✅ String slice kullan (kopyalama yapmadan)
değişken s = "Merhaba Dünya" değişken alt = s[0..7] // "Merhaba" (zero-copy) -
✅ Önceden boyut ayır
değişken sb = StringBuilder::with_capacity(1000)
Özet
- ✅ UTF-8 native desteği
- ✅ Türkçe karakter desteği
- ✅ Zengin stdlib API
- ✅ Zero-copy operasyonlar
- ✅ Regex desteği
- ✅ String interpolasyon
- ✅ StringBuilder performansı