İçeriğe atla

Ruby/Stringler

Vikikitap, özgür kütüphane

←Merhaba Dünya | Alternatif String Yazımları→

Python, Java, ve .NET Framework gibi Ruby de bir String sınıfına sahiptir.

String değerler

[düzenle]

Bir Ruby programında bir string değer ifade etmenin bir yolu tek ya da çift tırnak içinde yazmaktır, buna string literal denir. Daha önce bunu Merhaba Dünya programımızda yapmıştık. Programımızda kısa bir güncelleme yaparak hem tek hem de çift tırnak ile ifade etmeyi görelim.

puts "Merhaba Dünya!"
puts 'Merhaba Dünya!'


Hem tek hem de çift tırnak içinde string değer ifade etmek Perl diline benzer, fakat C ve Java gibi çift tırnağı string değer ifade ederken ve tek tırnağı tek karakter ifade ederken kullanan dillerden farklıdır.

Peki Ruby'de tek ve çift tırnak arasında ne fark var? Yukarıdaki kodda bir fark yok, ama aşağıdaki koda bir bakalım:

puts "Eda'nın pasta dükkanı"
puts 'Eda\'nın pasta dükkanı'

"Eda'nın" kelimesi apostrof (tek tırnak) içerdiği için ikinci satırda Ruby'nin string değer ifadesi bitmiş olarak algılamaması için önüne bir ters bölü koyarak tek tırnağın string değer içinde olduğunu belirtiyoruz. Ters bölü arkasından gelen tek tırnak yapısı escape sequence olarak bilinir.


Tek tırnaklar

[düzenle]

Tek tırnaklar sadece iki escape sequences içerebilir.

  • \' – tek tırnak
  • \\ – tek ters bölü

Bu ikisi dışında tek tırnak içinde olan tüm ters bölü ile başlayan şeyler olduğu gibi alınır.


Çift tırnaklar

[düzenle]

Çift tırnak içinde tek tırnaktan çok daha fazla çeşit escape sequence kullanılabilir. Çift tırnak içinde ayrıca bir Ruby değişkeni değerini de yazdırmak mümkündür, buna enterpolasyon denir.

puts "Adınızı Giriniz : "
isim = gets.chomp
puts "Adınız : #{isim}"


Escape sequence'ler

[düzenle]

Aşağıda çift tırnak ifadeler içinde çok kullanılan escape sequence ifadeleri görülüyor.

Bu örnek kodu deneyerek escape sequence'ler hakkında daha iyi bilgi sahibi olabilirsiniz.

puts "Merhaba\t\tdünya"
 
puts "Merhaba\b\b\b\b\bHoşçakal dünya"
 
puts "Merhaba\rBaşa dön, dünya"
 
puts "1. Merhaba\n2. dünya"

Sonuç:

$ çift_tırnaklar.rb
Merhaba		dünya
MeHoşçakal dünya
Başa dön, dünya
1. Merhaba
2. dünya

Dikkat ederseniz son satırdaki \n alt satıra geçerken \r kursörü satırın başına getirip eski yazının üstüne yazdı.

Bell karakteri, escape kodu \a ile ifade edilir ve bir kontrol karakteri olarak bilinir. Alfabeden bir harf, bir noktalama işareti veya yazılı herhangi bir sembol ile gösterilmez. Bunun yerine terminal emülatöre istekte bulunarak (Microsoft Windows'da konsol olarak bilinir) kullanıcıya uyarı yapmasını talep eder. Buna karşılık nasıl davranacağı terminal emülatörüne kalmıştır, bu genellikle kısa bir beep sesidir. Bazı terminal emülatörleri kısa bir süre yanıp söner.

Terminal emülatörünüzün bell karakterini nasıl algıladığını test için aşağıdaki Ruby kodu deneyiniz.

puts "\aMerhaba dünya\a"


puts

[düzenle]

Şimdiye kadar yazı çıktısı almak için puts metodunu kullandık. Whenever puts bir yazı çıktısı yazdığında arkasından yeni satıra geçer (sonuna newline ekler). Örneğin aşağıdaki kodu deneyin.

puts "tüm", "dünyaya", "merhaba", "de"

Sonuç:

$ ./merhaba.rb
tüm
dünyaya
merhaba
de


print

[düzenle]

Aksine Ruby'de print sadece siz belirtirseniz newline karakteri koyar. Örneğin aşağıdaki kodu deneyin. Burada newline karakterini print'in argümanlarının en sonuncusu olarak verdik, böylece terminalde prompt yazıdan sonra alt satırda görünür.

 print "tüm", "dünyaya", "merhaba", "de", "\n"

Sonuç:

$ ./merhaba.rb
tümdünyayamerhabade


Aşağıdaki kod da aynı sonucu oluşturur, yani print ve puts deyimleri aslında her argüman için ayrı ayrı çalıştırılıyor.

print "tüm"
print "dünyaya"
print "merhaba"
print "de"
print "\n"


Ayrıca bakınız

[düzenle]

Karakter Dizileri