Skip to main content

💎 Ruby’de Veri Tipi Dönüştürme Rehberi: String, Sayı, Dizi ve Sembol Arasında Geçiş

Ruby, geliştiricilere esnek veri tipi yapısı sayesinde kolay manipülasyon imkânı sunar. Ancak API, form ya da veritabanından gelen veriler genellikle string türündedir. Bu rehberde, Ruby’de string’leri sayılara, nesneleri string’e, string’leri dizilere (array) ve sembollere (symbol) dönüştürmeyi öğreneceksiniz.


🧠 Bu Rehberde Ne Öğreneceksiniz?

  • to_i, to_f, Integer() ile string → sayı dönüştürme
  • to_s ve interpolasyon (#{}) ile veri → string dönüştürme
  • split metodu ile string → dizi dönüştürme
  • to_sym ve to_s ile string ↔ symbol dönüşümleri
  • Hatalı girişleri tespit etme ve veri bütünlüğünü koruma

1️⃣ String’leri Sayıya Dönüştürme

Kullanıcıdan veya dış kaynaktan alınan veriler string olarak gelir. Matematiksel işlem yapmadan önce bu veriyi sayıya çevirmek gerekir.

"5".to_i      # 5
"55.5".to_i # 55
"55.5".to_f # 55.5

💬 to_i tam sayı, to_f ondalıklı sayı üretir.


🧮 Örnek: Kullanıcıdan Sayı Almak ve Toplamak

# adder.rb
print "Birinci sayı: "
ilk = gets.chop.to_f
print "İkinci sayı: "
ikinci = gets.chop.to_f

puts "Toplam: #{ilk + ikinci}"

Çıktı:

Birinci sayı: 5
İkinci sayı: 5
Toplam: 10.0

💡 Klavye girişleri varsayılan olarak string’tir; to_f ile dönüştürülmezse “5” + “5” = “55” sonucu alınır.


⚠️ to_i Metodunun Davranışı

to_i, sayısal olmayan karakter gördüğü anda durur.

"123-abc".to_i   # => 123
"abc".to_i # => 0

💬 Eğer string sayı ile başlamıyorsa sonuç 0 döner. Bu, sıfıra bölme gibi hatalara yol açabilir.


✅ Daha Güvenli Alternatif: Integer() veya Float()

Integer("123")      # 123
Integer("123abc") # ArgumentError: invalid value

💬 Bu yöntem hatalı girdilerde hata fırlatarak veri tutarlılığını korur.


2️⃣ Verileri String’e Dönüştürme

Program çıktılarında genellikle sayısal veya nesne verilerini string’e dönüştürmek gerekir. Ruby’de bunun için to_s metodu kullanılır:

25.to_s            # "25"
[1,2,3].to_s # "[1, 2, 3]"
true.to_s # "true"

🎯 Örnek: Kullanıcı Bilgisi Gösterme

user = "Rabisu"
calories = 100

puts "Tebrikler, #{user}! Bu antrenmanda #{calories} kalori yaktınız."

💬 Interpolasyon (#{}) to_s metodunu otomatik çağırır, böylece ek dönüşüm gerekmez.

Alternatif olarak:

puts "Tebrikler, " + user + "! " + calories.to_s + " kalori yaktınız."

🧩 Ek Bilgi: inspect Metodu

Debug aşamasında değişkenin değerini görmek için inspect kullanılabilir.

puts [1,2,3].inspect
# Çıktı: [1, 2, 3]

💬 Üretim ortamında değil, hata ayıklama sürecinde tercih edilir.


3️⃣ String’leri Dizilere (Array) Dönüştürme

String’i diziye çevirmek için split metodunu kullanabilirsiniz.

"elma armut muz".split
# => ["elma", "armut", "muz"]

"Kaplan,Büyük Beyaz,Çekiç Kafa".split(",")
# => ["Kaplan", "Büyük Beyaz", "Çekiç Kafa"]

🎯 Örnek: Veriyi Ayrıştırma ve Listeleme

data = "Tiger,Great White,Hammerhead,Whale,Bullhead"
sharks = data.split(",").sort
sharks.each { |shark| puts shark }

Çıktı:

Bullhead
Great White
Hammerhead
Tiger
Whale

💬 split veriyi ayırır, sort sıralar, each döngüsüyle yazdırır.


4️⃣ String ↔ Symbol Dönüşümü

Ruby’de semboller (:symbol) string’lere benzer ama hafif ve değişmez (immutable) yapılardır. Genellikle hash anahtarlarında kullanılır.

🔁 Sembolü String’e Çevirme

:dil.to_s       # "dil"

🔁 String’i Sembole Çevirme

"ilk_isim".to_sym   # :ilk_isim

🎯 Örnek: Form Alanlarını Sembole Dönüştürme

text = "First name"
symbol = text.gsub(" ", "_").downcase.to_sym
# => :first_name

💬 Bu dönüşüm, form alanlarını hash anahtarlarına çevirmek için idealdir.


💬 Sıkça Sorulan Sorular (SSS)

1️⃣ to_i ve Integer() farkı nedir? to_i hatalı veride 0 döndürür; Integer() hata fırlatarak veri doğruluğunu korur.

2️⃣ String interpolasyonu neden önerilir? Daha okunabilir kod sağlar, to_s dönüşümünü otomatik yapar.

3️⃣ split hangi karaktere göre ayırır? Varsayılan boşluktur; farklı bir ayraç parametre olarak verilebilir.

4️⃣ Semboller neden performanslıdır? Her sembol sadece bir kez belleğe yüklenir, tekrar kullanılabilir.

5️⃣ String’i harf harf diziye çevirmek mümkün mü? Evet, chars metodu kullanılır:

"merhaba".chars  # => ["m","e","r","h","a","b","a"]

🎯 Sonuç

Artık Ruby’de temel veri tipi dönüşümlerine hakimsiniz:

  • String → Sayı (to_i, to_f, Integer)
  • Sayı → String (to_s, interpolasyon)
  • String → Dizi (split)
  • String ↔ Symbol (to_s, to_sym)

Bu teknikler, özellikle kullanıcı girdilerini işlerken veya API verilerini analiz ederken hata oranını düşürür.

💡 Deneyin: Rabisu Bulut platformunda bir Sanal Sunucu (V-Server) başlatarak bu örnekleri kendi Ruby ortamınızda test edin.