Ruby Karakter Dizilerinin [String (s)] Özellikleri (Fonksiyonları veya Metodları)

ZuL-RaA

Kadim Üye
9 Ara 2017
5,564
838
Semerkant
Merhabalar,

Bu konuda karakter dizilerinin özelliklerini ya da diğer tabiriyle metodlarından bahsedeceğim. Şu ifadeyi de konunun başına ekleyeyim.

Çoğu dilde sayılar ve diğer ilkel tipler nesne değildir. Ruby tüm tiplerine metod ve örnek değişkenleri verme geleneğini Smalltalk’tan miras almıştır. Bu, Ruby kullanımını kolaylaştırır, çünkü nesnelere uygulanan kurallar Ruby’nin tümüne uygulanır.

Ruby bir metodu illa kullanmak için () parantez kullanmak gerekmez. Ben kullanmayacağım. İkisi de çalışır. Örneğin, [ puts("ZuL-RaA") - puts "ZuL-RaA" ]. Haydi başlayalım...

Dikkat edilmesi gerekenler.

Karakter Dizileri (String) = "ZuL"
Dizi (Array) = ["Z", "u", "L"]

Bu karışmasın.

Bir Karakter Dizisinin Uzunluğu Öğrenme

.size ya da .length kullanılabilir. 1 den başlar, 0 dan başlamaz unutmayın.

OJrvXl.png


Çıktısı 6.

Bir Dizinin Dolu veya Boş Olup Olmadığını Kontrol Etme

gbEtYK.png


.empty? ile kontrol ediyoruz. Birinci kodun çıktısı "true" iken, ikincisinin çıktısı "false" tur. "true" evet boş, "false" hayır dolu demektir.

Karakter Dizisine Değişken Ekleme veya İşlem Yapma

fT034u.png


Karakter Dizisinin içine #{değişken_ismi} şeklinde değişken bir değer koyabiliriz. Çıktısı: "hoşgeldin Atmaca".

bLuYbw.png


Ya da işlem yapabiliriz. Çıktısı: "50 kere hoşgeldin Atmaca".

Karakter Dizisinin Bir Kısmını Almak

WrUx7C.png


[birinciveri, ikinciveri] ile bir karakter dizisinin bir kısmını alabiliriz. birinciveri başlama indisidir. ikinciveri ise başlama indisinden sonra kaç indisin alınacağıdır. Çıktısı "Atmac." Bir örnek daha.

cMCKyk.png


Çıktısı "uçan" dır.

Karakter Dizisinin İçine Olup Olmadığı Öğrenme

AS1552.png


Cümlemizin içinde "kuş" olup olmadığını öğrendik. Çıktısı "true" oldu. "false" da yok demek.

b5nRcx.png


Bu örnekte birincisi "true", ikincisi "false" döndü. Var mı yok mu diye bakıyor, kelime var mı yok mu diye bakmıyor!

Bir Karakter Dizisini Doldurmak

BYUr9i.png


Sağdan doldurmak için: ".rjust", soldan doldurmak için: ".ljust" kullanıyoruz. İkisi de iki değer alıyor. Birinci değer olması gereken karakter sayısı, ikinci değer eğer o karakter olması için ne gelecek.

Birinci çıktı:

**********Atmaca uçan bir kuş.

İkinci çıktı:

Atmaca uçan bir kuş.**********

Bir Karakter Dizisindeki Fazladan Boşlukları Kaldırma

aMeLE0.png


.strip bir karakter dizisindeki fazla boşlukları kaldırmakta işimize yarar. İlk karakter dizisinde de denedim ama bir şey değişmedi.

Çıktısı: "Atmaca uçan bir kuş."

İkinci karakter dizisinde ise kaldırdı.

Çıktısı: "Atmaca"

Şu şekilde diyelim. Eğer iki karakter arasında boşluk varsa kaldırmaz. Örneğin "x y". Ama şöyle ise " x y " baştaki ve sondaki kalkar.

Bu Şekilde Başlıyor veya Bitiyor mu?

Q8vhqX.png


İlk ikisi "true", sonuncusu "false" döndü. Büyük küçük harf duyarlı.

i2eK5w.png


Yine ilk ikisi "true", sonuncusu "false" döndü.

Karakter Dizisinin Başını veya Sonunu Silmek

.delete_prefix ön kısmı, ön eki silmeye yarıyor. .delete_suffix son kısmı, son eki silmeye yarıyor.

miXuJa.png


İlk sonunu sildim. Sırayla çıktıları:

"Atmaca uçan bir k"
"Atmaca uçan bir ".

5JLEkz.png


Sırayla çıktıları:

"maca uçan bir kuş."
" uçan bir kuş."

Boşluklara dokunmuyor.

Karakter Dizisini Parçalayıp Diziye (Array) Çevirme

.split ile bir karakter dizisini parçalayıp diziye (Array) çevirebiliriz. Boşluklara ellemiyor.

2bZRcb.png


İlk karakter dizisini boşluktan parçalayıp ekrana bastım çıktısı şu şekilde oldu:

"Atmaca
uçan
bir
kuş."

İkincisinin ise şu şekilde:

"Atmaca
uçan
bir
kuş.".

Alt alta olması puts dan dolayıdır. İçine argüman vermez isek varsayılan olarak boşluktan parçalıyor.

Bir Diziyi (Array) Karakter Dizisine Dönüştürme

UtuA3e.png


.join ile bir diziyi (Array) karakter dizisine çevirebiliriz. Orijinal değişken yani dizi (Array) değişmez.

Çıktısı: "Atmacabirkuştur."

Hoş çıktı değil düzeltelim.

d9UPM0.png


Bir tane argüman verebiliriz. O da dizinin (Array) elemanları arasına gelen şey oluyor. Sırayla çıktılar:

"Atmaca bir kuştur."

"Atmaca-bir-kuştur."

8qtzgw.png


Kafanız karşımasın :) Çıktısı:

"Atmaca * Atmaca * bir * Atmaca * kuştur."

Karakter Dizisini Sayıya Çevirme

İçinde sayı olduğundan emin olun.

1PatTg.png


İlk kod karakter dizisi olan değişkenimizi tanımlıyor.

İkinci ve üçüncü kod eşitlik kodudur. == ile eşit mi değil mi diye kontrol ettik ve puts ile sonucu ekrana bastık.

İkinci kodun çıktısı:

"true"

Üçüncü kodun çıktısı:

"false".

İkinci kod "true" dönüyor çünkü o bir karakter dizisi ve verisi eşit.

Üçüncü kod "false" dönüyor çünkü o bir tam sayı ve verisi karakter dizisi.

.to_i şu şekilde açılabilir: "to integer" yani "tam sayıya demek".

VfTwWy.png


Az önce karakter dizisi olan 108 e eşit mi diye kontrol ederken şimdi tam sayı 108 e eşit mi diye kontrol ediyoruz.

İkinci ve üçüncü kodun sırayla çıktısı:

"false"

"true".

Son olarak bir karakter dizisinin verisi sayı değilse harf veya karakter içeriyorsa 0 döner.

iJJqac.png


Çıktısı: 0

Bir Karakter Dizisini Güncelleme

<< bu iki şey kullanılıyor. Görelim.

JSTLVd.png


Sonuna bunu ekledik. " Ve kuş.".

Çıktısı: "Kuş. Ve kuş."

Bu da kullanılabilir.

xnG03f.png


Çıktısı: "Kuş. Ve kuş.".

Şunu eklemeliyim. Dize birleştirme için += kullanmayın çünkü bu her seferinde yeni bir dize oluşturur, bu performans için iyi değildir!

Karakter Dizisini Karakterlerinden Parçalamak

Öncellikle bu şekilde parçalanabiliyor. Bu bir iterasyondur. Denildiği gibi for döngüsüdür.

WtVEoB.png


Çıktısı:

"r
u
b
y
g
ü
z
e
l".

Ya da şimdi gördüğümüz .chars ile parçalayabiliriz.

Kh7Xo6.png


Çıktısı:

"r
u
b
y
g
ü
z
e
l"

İki türde de aslında bize dizi (Array) tipinde çevirir.

Bir Karakter Dizisindeki Harfler Büyültmek veya Küçültmek

Harfleri büyültmek için .upcase, küçültmek için ise .downcase kullanabiliriz. I ve İ sıkıntılıdır ama :(

fT4aru.png


Sırayla çıktılar:

"RUBY ILE PROGRAMLAMAK EĞLENCELIDIR."

"ruby ile programlamak eğlencelidir.".

MLyr1R.png


Sırayla çıktılar:

"Ş Ğ I I Ö Ü Ç"
"ş ğ i̇ i ö ü ç"

Dediğim sorun bu.

Karakter Dizisindeki Bir Yeri Değiştirme

CgRlmU.png


.gsub iki argüman alıyor. Birincisi değiştirilecek olan ikincisi yerine gelecek olan. Angara dense de Ankara'dır. TDK kırmızı çizgimizdir.

Çıktı:

"Ankara güzel memleket."

Bir Karakter Dizisinin Karakter Kodlamasını (encoding) Öğrenme

YrA0jv.png


Çıktısı: "UTF-8".

Bir Karakter Dizisindeki Aynı Karakterin Sayısını Bulma

0vGi61.png


Çıktılar:

"2
6
1"

Şimdi bu büyük küçük harf duyarlı her zaman ki gibi. 1 ve 3 gitti. İkinci kod neden 6 döndü derseniz Ruby "el" hecesinden kaç tane var diye bakmadı karakter dizisine. "e" ve "l" harflerinden kaç tane varsa onları buldu ve sayıyı toplayı bize sundu. 2 adet "l", 4 adet "e".

Evet konu bitti! Okuduğunuz için teşekkürler.

oKEKz1.gif


 
Son düzenleme:

ZuL-RaA

Kadim Üye
9 Ara 2017
5,564
838
Semerkant
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.