Bloğa geri dön

Ruby'de Stringlerle Çalışmak

Ruby'de Stringlerle Çalışmak

Ruby yorumlanan, dinamik, yansıtıcı, nesne yönelimli bir programlama dilidir. Yukihiro Matsumoto tarafından geliştirilen Ruby, sadelik ve üretkenliğe odaklanır. Zarif sözdizimi, geliştiricilerin kodu daha kolay okumasını ve yazmasını sağlar.

Bu kılavuzda, Ruby'de dizelerle çalışacağız.

Gereksinimler

Bu eğitimde gösterilen adımları gerçekleştirmek için aşağıdaki bileşenlere ihtiyacınız vardır:

Dize Veri Türü

Programlamada, bir dize her modern programlama dilinin desteklediği yaygın bir veri türüdür. Bir karakter dizisi ile karakterize edilir. Tüm karakter dizisi tek bir veri parçası olarak kabul edilir. Bir dize harfler, rakamlar ve özel karakterler/semboller içerebilir.

Saf bir nesne yönelimli programlama dili olan Ruby, dizeleri nesne olarak ele alır. Diğer birçok dilin aksine, Ruby'deki dizeler değiştirilebilirdir. Temel olarak, dize değeri yerinde değiştirilebilir.

Adım 1 – Dizeleri Oluşturma ve Yazdırma

Ruby'de dizeler tek tırnak ( ') veya çift tırnak ( ") içine alınır. Aşağıdakiler Ruby'de geçerli iki dizedir:

Konsol ekranına herhangi bir çıktı yazdırmak için Ruby, print yöntemiyle birlikte gelir:

Bunu uygulamaya koyma zamanı. Şu adla yeni bir Ruby dosyası oluşturun: practice.rb ve aşağıdaki kodları girin:

Kodu çalıştırın:

Strings in Ruby 1

Beklendiği gibi, print komutu sağlanan dizeleri yazdırır. Dizeleri ayrı satırlara yazdırmak istiyorsak, bunun yerine puts kullanmak daha iyidir. Kodu güncelleyin:

Ardından, kodu tekrar çalıştırın:

Strings in Ruby 2

Adım 2 – Dize Değişkenleri

Değişkenler, bilgisayar belleğinde bir değerin saklandığı belirli bir yere atıfta bulunan adlardır. İstediğimiz değeri değişkende saklayabilir ve daha sonra kullanabiliriz.

Ruby'de bir dize değişkeni bildirmek için değişken adını tanımlayın ve bir dize değeri atayın:

Aşağıdaki kodu şu dosyanın içine yazın: practice.rb:

Kodu çalıştırın:

Burada:

  • İki değişken tanımladık: first_half ve second_half, her birine bir dize değeri atanmıştır.
  • The puts yöntemi değişkenlerin değerini yazdırır.

Adım 3 – Dize Birleştirme

Birleştirme yaparak, birden fazla dizeyi alıp yeni bir dize oluşturmak için bir araya getirebiliriz. Dize birleştirme, birleştirme operatörü ( +) ile gösterilir. Bu sembolün aritmetik işlemlerle çalışırken aynı zamanda toplama operatörü olduğunu unutmayın.

Şimdiye kadar bildirdiğimiz dizeler üzerinde dize birleştirmeyi gerçekleştirmeyi deneyelim:

Kodu çalıştırın:

Çıktının gösterdiği gibi, birleştirme dizelerin arasına herhangi bir ek karakter eklemez. Bu yüzden fox ve jumps birbirine bitişik yazılır. Bunu, şu ifadeden sonra boşluk bırakarak düzeltebiliriz: fox:

Kodu çalıştırın:

Şimdi çıktı daha iyi görünüyor.

Dize birleştirme değişkenlerle de çalışır. Aşağıdaki örneğe göz atın:

Strings in Ruby 3

Kodu çalıştırın:

Bir sonraki örnek, uzun bir birleştirme zincirini göstermektedir:

Strings in Ruby 4

Kodu çalıştırın:

Şimdiye kadar sadece dize (string) değişkenleriyle uğraştık. Peki ya farklı değişken türleri olsaydı? Aşağıdaki program bu senaryoyu test ediyor:

Strings in Ruby 5

Bu programı çalıştırmayı denediğinizde, Ruby bir hata mesajı verecektir:

Ancak, bu sorunu önlemek için tam sayıyı (integer) bir dizeye (string) dönüştürebiliriz:

Strings in Ruby 6

Burada:

  • Metot to_s değişken değerini bir dizeye dönüştürür.

Posta kodları, para birimi, telefon numaraları ve diğer sayısal veriler gibi öğelerle uğraşırken sayıları dizelere dönüştürmek yaygın bir durumdur.

Adım 4 – Dize Enterpolasyonu (String Interpolation)

Dize birleştirme güçlü bir özellik olsa da, çok kolay bir şekilde karmaşık hale gelebilir. Çoğu durumda, muhtemelen bir birleştirme operatörünü ( +) kaçırdığınızı fark edeceksiniz ve bu da büyük bir baş ağrısına yol açacaktır. Dahası, farklı veri türleriyle uğraşırken, önce dizeye dönüştürülmesi gerekir. Neyse ki Ruby, dize enterpolasyonu özelliğini kullanarak dizeye değişken değerleri eklemenin başka yollarını sunar: dize enterpolasyonu (string interpolation).

Şöyle görünür. Örneğin, şunu kullanmak yerine:

Şunu kullanacağız:

Sözdizimi biraz garip görünse de, kodu önemli ölçüde basitleştirir. Değişken değerini dizeye dönüştürmek için manuel olarak to_s metodunu çağırmaya gerek kalmaz.

Önceki kodumuzu güncellemek için bu yeni tekniği kullanalım:

Strings in Ruby 7

Kodu çalıştırın:

Adım 5 – Dize Değişmezleri (String Literals) ve Dize Değerleri (String Values)

Kodlarda tanımlanan dizelerin her zaman tırnak işaretleriyle çevrili olduğuna dikkat edin. Ancak, çıktıyı konsol ekranına yazdırırken tırnak sembolleri yoktur. Aralarında açıkça bir fark vardır.

  • Dize değişmezi (String literal): Kaynak kodda yazılan dizedir (tırnak işaretleri dahil).
  • Dize değeri (String value): Çıktıda yazdırılan değerdir (tırnak işaretleri olmadan).

Örneğin, aşağıdaki bir dize değişmezidir:

Bunun dize değeri merhaba dünya.

Adım 6 – Tırnak ve Kesme İşaretlerinden Kaçış (Escaping)

Gösterdiğimiz gibi, kaynak kodda dizeleri belirtmek için tırnak ve kesme işaretleri kullanılır. Bu bir sorun teşkil eder: Bunları doğrudan dize içinde kullanamazsınız. Aksi takdirde sorunlara yol açacaktır. Aşağıdaki kod bunu göstermektedir:

Strings in Ruby 8

Bu sorunu aşmak için farklı taktikler vardır.

  • Alternatif Dize Sözdizimi Kullanma

Bu, sorunu aşmanın en basit yoludur. Dizeniz tek tırnak gerektiriyorsa, dize değişmezinde çift tırnak kullanın (veya tam tersi).

Önceki örneği düzeltelim:

Başka bir örnek:

Ancak her durumda işe yaramayacaktır. Örneğin:

  • Kaçış Karakterlerini Kullanma

Ters eğik çizgi ( \) karakteri genellikle kaçış karakteri olarak adlandırılır. Ruby'nin bir sonraki karakteri olduğu gibi yorumlamasını engeller. Önceki örneği düzeltelim. Ruby'nin dahili çift tırnak işaretlerini değişmez olarak yorumlamasını önlemek için ters eğik çizgiyi kullanın:

  • Alternatif Sözdizimi Kullanımı

Şimdiye kadar, dize sabitini belirtmek için yalnızca tek ve çift tırnak işaretleriyle çalıştık. Ancak, önceki örnekler bunun ne kadar hızlı bir şekilde kontrolden çıkabileceğinin basit göstergeleridir. Bu sorunu çözmek için, tırnak işaretlerini tamamen bir kenara bırakıp bir dizenin başlangıcını ve bitişini belirtmek için tamamen farklı bir sembol kullanabiliriz.

Aşağıdaki örneğe bir göz atın:

Burada:

    • Sembol % bir sonraki karakteri ( $, bu durumda) dizenin sınırlayıcısı olarak tanımlar.
    • Buradaki dize sabiti şudur: $the quick brown fox said, "I jumped over the lazy dog"$.

Hadi bunu uygulamaya koyalım:

Burada, dize temelde şu şekilde ele alınır:

Ancak bu, sınırlayıcının dize içinde kullanılması durumunda kaçış karakteri kullanılması sorununu yeniden ortaya çıkarır. Bundan kaçınmanın bir yolu, genellikle dizelerde görünmeyen semboller kullanmaktır. Bu tür semboller süslü parantezler, köşeli parantezler vb. içerebilir:

Dize enterpolasyonlarıyla da mükemmel çalışır:

Ruby programlarında dizeleri tanımlamak için %Q{} ve %q{} kullanmak da yaygındır. Burada, %Q{} çift tırnak gibi davranır ve %q{} tek tırnak gibi davranır.

Adım 7 – Yeni Satırlar ve Uzun Dizeler

Dizelerle çalışırken, dizeye yeni bir satır (newline) veya satır başı (carriage return) eklemek isteyeceğiniz durumlar olacaktır. Bunu, kaçış karakterleri olan \n (yeni satır) ve \r (satır başı) karakterlerini ekleyerek yapabiliriz.

Aşağıdaki örneğe bir göz atın:

Dize sabiti kafa karıştırıcı görünüyor, değil mi? Daha iyi okunabilirlik için bunu yeniden düzenleyelim:

Yeni satır karakterlerini manuel olarak bildirmek yerine aşağıdaki yapıyı da kullanabiliriz:

Strings in Ruby 8

Strings in Ruby 9

Bu yöntemde dize tüm boşlukları korur. Ancak bu durum çıktıyı bozar. Düzeltmek için fazladan boşlukları kaldırın:

Strings in Ruby 10

Boşluk sorunu çözülmüş olsa da, bu durum kodun okunabilirliğini azaltır. Bu sorunu bir heredoc (çok satırlı dize sabitleri için kullanılan bir terim) uygulayarak çözebiliriz. Güncellenmiş kod şu şekilde görünecektir:

Strings in Ruby 11

Strings in Ruby 12

Ruby v2.3 ve üzeri sürümlerden itibaren, squiggly heredoc sözdizimi adında başka bir özellik mevcuttur. Bu özellik, dizelerdeki baştaki boşlukları kaldırır. Bir squiggly heredoc belirtmek için, tire işaretini ( -) tilde ( ~):

Strings in Ruby 13

Step 8 – Dizeleri Çoğaltma

Bazı durumlarda, bir dizeyi birkaç kez tekrarlamak gerekebilir. Ruby, dizelerin çeşitli şekillerde çoğaltılmasına izin verir.

Bu tekniklerden biri, * operatörünü kullanmaktır. Genellikle sayılarla çalışırken çarpma operatörü olarak kullanılır. Ancak dizelerle çalışırken, dize çoğaltma operatörü haline gelir ve tek bir dizeyi gerektiği kadar tekrarlar. Tekrar sayısı bir tam sayı olmalıdır.

Aşağıdaki örnekte, Boris metni 5 kez tekrarlanacaktır:

Strings in Ruby 14

Bu özelliği kullanarak harika ASCII sanatları üretebiliriz. Aşağıdaki örneğe göz atın:

Son Düşünceler

Programlamada dizeler vazgeçilmezdir. Bu kılavuz, Ruby'de dizelerle çalışmayı göstermektedir. Dizelerin nasıl oluşturulacağını ve birleştirme, yeni satırları işleme, tırnak işaretleri vb. gibi çeşitli işlemlerin nasıl gerçekleştirileceğini öğrendik. Dize enterpolasyonunu kullanarak, değişken değerlerini dizelere nasıl daha iyi entegre edeceğimizi de öğrendik. Dize çoğaltma operatörünü kullanarak tek bir dizeyi birden çok kez de tekrarlayabiliriz.

Ruby tek başına mükemmel bir programlama dili olsa da, genellikle Rails framework'ü ile birlikte kullanılır. Ruby on Rails açık kaynaklı bir web uygulaması framework'üdür. Ubuntu üzerinde Ruby on Rails kurulumu hakkında daha fazla bilgi edinin.. Ancak Ruby, MySQL ve PostgreSQL gibi diğer uygulamalarla da çalışabilir..

Keyifli Kodlamalar!

author

Preslav Dobrev

Yazar · CloudSigma

Preslav Dobrev, CloudSigma'da Kreatif Tasarımcı olarak görev yapmakta olup geleneksel ve yenilikçi pazarlama kanallarını kullanarak tutarlı bir kurumsal kimlik oluşturmaya odaklanmaktadır. Sanatsal vizyonu stratejik pazarlamayla harmanlayarak etkili marka anlatıları oluşturma konusunda oldukça yeteneklidir.

Yorumlar

Henüz yorum yapılmamış. İlk siz olun.