Merhabalar,
Bu konuda karakter dizilerinin özelliklerini ya da diğer tabiriyle metodlarından bahsedeceğim. Şu ifadeyi de konunun başına ekleyeyim.
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.
Çıktısı 6.
Bir Dizinin Dolu veya Boş Olup Olmadığını Kontrol Etme
.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
Karakter Dizisinin içine #{değişken_ismi} şeklinde değişken bir değer koyabiliriz. Çıktısı: "hoşgeldin Atmaca".
Ya da işlem yapabiliriz. Çıktısı: "50 kere hoşgeldin Atmaca".
Karakter Dizisinin Bir Kısmını Almak
[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.
Çıktısı "uçan" dır.
Karakter Dizisinin İçine Olup Olmadığı Öğrenme
Cümlemizin içinde "kuş" olup olmadığını öğrendik. Çıktısı "true" oldu. "false" da yok demek.
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
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
.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?
İlk ikisi "true", sonuncusu "false" döndü. Büyük küçük harf duyarlı.
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.
İlk sonunu sildim. Sırayla çıktıları:
"Atmaca uçan bir k"
"Atmaca uçan bir ".
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.
İ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
.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.
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."
Kafanız karşımasın Çıktısı:
"Atmaca * Atmaca * bir * Atmaca * kuştur."
Karakter Dizisini Sayıya Çevirme
İçinde sayı olduğundan emin olun.
İ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".
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.
Çıktısı: 0
Bir Karakter Dizisini Güncelleme
<< bu iki şey kullanılıyor. Görelim.
Sonuna bunu ekledik. " Ve kuş.".
Çıktısı: "Kuş. Ve kuş."
Bu da kullanılabilir.
Çı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.
Çıktısı:
"r
u
b
y
g
ü
z
e
l".
Ya da şimdi gördüğümüz .chars ile parçalayabiliriz.
Çı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
Sırayla çıktılar:
"RUBY ILE PROGRAMLAMAK EĞLENCELIDIR."
"ruby ile programlamak eğlencelidir.".
Sırayla çıktılar:
"Ş Ğ I I Ö Ü Ç"
"ş ğ i̇ i ö ü ç"
Dediğim sorun bu.
Karakter Dizisindeki Bir Yeri Değiştirme
.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
Çıktısı: "UTF-8".
Bir Karakter Dizisindeki Aynı Karakterin Sayısını Bulma
Çı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.
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 Smalltalktan miras almıştır. Bu, Ruby kullanımını kolaylaştırır, çünkü nesnelere uygulanan kurallar Rubynin 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.
Çıktısı 6.
Bir Dizinin Dolu veya Boş Olup Olmadığını Kontrol Etme
.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
Karakter Dizisinin içine #{değişken_ismi} şeklinde değişken bir değer koyabiliriz. Çıktısı: "hoşgeldin Atmaca".
Ya da işlem yapabiliriz. Çıktısı: "50 kere hoşgeldin Atmaca".
Karakter Dizisinin Bir Kısmını Almak
[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.
Çıktısı "uçan" dır.
Karakter Dizisinin İçine Olup Olmadığı Öğrenme
Cümlemizin içinde "kuş" olup olmadığını öğrendik. Çıktısı "true" oldu. "false" da yok demek.
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
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
.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?
İlk ikisi "true", sonuncusu "false" döndü. Büyük küçük harf duyarlı.
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.
İlk sonunu sildim. Sırayla çıktıları:
"Atmaca uçan bir k"
"Atmaca uçan bir ".
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.
İ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
.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.
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."
Kafanız karşımasın Çıktısı:
"Atmaca * Atmaca * bir * Atmaca * kuştur."
Karakter Dizisini Sayıya Çevirme
İçinde sayı olduğundan emin olun.
İ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".
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.
Çıktısı: 0
Bir Karakter Dizisini Güncelleme
<< bu iki şey kullanılıyor. Görelim.
Sonuna bunu ekledik. " Ve kuş.".
Çıktısı: "Kuş. Ve kuş."
Bu da kullanılabilir.
Çı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.
Çıktısı:
"r
u
b
y
g
ü
z
e
l".
Ya da şimdi gördüğümüz .chars ile parçalayabiliriz.
Çı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
Sırayla çıktılar:
"RUBY ILE PROGRAMLAMAK EĞLENCELIDIR."
"ruby ile programlamak eğlencelidir.".
Sırayla çıktılar:
"Ş Ğ I I Ö Ü Ç"
"ş ğ i̇ i ö ü ç"
Dediğim sorun bu.
Karakter Dizisindeki Bir Yeri Değiştirme
.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
Çıktısı: "UTF-8".
Bir Karakter Dizisindeki Aynı Karakterin Sayısını Bulma
Çı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.
Son düzenleme: