Basit örnekler
Önceki
İçindekiler
İçindekiler
Düzenli ifadeler
Sonraki

 Ruby Kullanıcı KılavuzuDizgiler (Strings) 

Ruby'de karakter dizgilerine nümerik bir veriymiş gibi davranabilirsiniz. Bir dizgi çift ("...") ta da tek ('...') tırnaklı olabilir.

ruby> "abc"
   "abc"
ruby> 'abc'
   "abc"

gurgenı durumlarda çift ve tek tırnak farklı işlevler görür. Çift tırnaklı bir dizgi \'yı takiben gelen karakteri göstermez ve gömülü ifadeleri #{} çalıştırmaya izin verir. Tek tırnaklı dizgi'ler buna izin vermez: ne görürsen onu alırsın. Örneğin:

ruby> print "a\nb\nc","\n"
a
b
c
   nil
ruby> print 'a\nb\n',"\n"
a\nb\nc
   nil
ruby> "\n"
   "\n"
ruby> '\n'
   "\\n"
ruby> "\001"
   "\001"
ruby> '\001'
   "\\001"
ruby> "abcd #{5*3} efg"
   "abcd 15 efg"
ruby> var = " abc "
   " abc "
ruby> "1234#{var}5678"
   "1234 abc 5678"

Ruby'nin dizgi işlemleri C'ye kıyasla daha esnek ve şıktır.Örneğin + ile iki dizgiyi birleştirebilirsiniz ya da * ile bir dizgiyi birçok kez tekrar ettirebirsiniz:

ruby> "foo" + "bar"
   "foobar"
ruby> "foo" * 2
   "foofoo"

C'de dizgileri birleştirme işi, kesin bellek yönetimi nedeniyle oldukça yakışıksızdır:

char *s = malloc(strlen(s1)+strlen(s2)+1);
strcpy(s, s1);
strcat(s, s2);
/* ... */
free(s);

Ruby kullandığımız için dizgilere ayrılan herhangi bir alanı işgal etmemize gerek yok. Bellek yönetimi açısından tamamen özgürüz.

Aşağıda dizgilerle yapabileceğiniz birkaç örnek var:

Birleştirme:

ruby> word = "fo" + "o"
   "foo"

Tekrarlatma:

ruby> word = word * 2
   "foofoo"

Karakterleri seçmek (ruby'de karakterlerin tamsayı olduğuna dikkat edelim):

ruby> word[0]
   102            # 102 is ASCII code of `f' 
ruby> word[-1]
   111            # 111 is ASCII code of `o'

(Negatif ofset, başlangıç yerine dizginin sonundan okumaya başlar.)

Dizgi içinden karakter kümesi ayırmak:

ruby> herb = "parsley"
   "parsley"
ruby> herb[0,1]
   "p"
ruby> herb[-2,2]
   "ey"
ruby> herb[0..3]
   "pars"
ruby> herb[-5..-2]
   "rsle"

Eşitlik kontrolü yapmak

ruby> "foo" == "foo"
   true
ruby> "foo" == "bar"
   false

Not: Ruby 1.0'da sonuçlar büyük harfle belirtiliyordu; örneğin TRUE.

Şimdi bu özelliklerin gurgenılarını hayata geçirelim: Bulmacamız bir "kelimeyi bil" bulmacası ama sanırım "puzzle" kelimesi fazla mütevazi oldu ^o~

# tahmin.rb olarak kaydedin
kelimeler = ['kestane', 'gurgen', 'palamut']
gizli_kelime = kelimeler[rand(3)]

print "tahmin? "
while tahmin = STDIN.gets
  tahmin.chop!
  if tahmin == gizli_kelime
    print "Kazandiniz!\n"
    break
  else
    print "Uzgunum, kaybettiniz.\n"
  end
  print "tahmin? "
end
print "Kelime: ", gizli_kelime, ".\n"

Şimdilik kodun detayları hakkında fazla kafa yormayalım. Aşağıda programın nasıl çalışması gerektiği görülüyor:

% ruby tahmin.rb
tahmin? kestane
Uzgunum, kaybettiniz.
tahmin? palamut
Uzgunum, kaybettiniz.
tahmin? ^D
Kelime: gurgen.

(1/3 olasılığa karşı biraz daha iyi yapmalıydım..).


Basit örnekler
Önceki
İçindekiler
İçindekiler
Düzenli ifadeler
Sonraki