Swift String ve Character

Merhaba arkadaşlar ,
mobilhanem.com sitemiz için anlattığımız/yayınladığımız Swift Dersleri serimize bu yazımızda Swift String ve Character ile devam edeceğiz. Bir önceki yazımızda Swift değişken tanımlama ve veri tipleri  konusundan bahsetmiştik. Bu dersimizde sık sık kullanılan ve sürekli karşınıza çıkabilcek olan bir konuyu ele alacağız.

String Nedir ?

String ,  karakter dizilerinden oluşan bir yapıdır. Peki karakter nedir ? diye düşünüyorsanız , bunu bir örnek ile açıklamak daha doğru olacaktır. Örneğin, “?” bir karakterdir , “a” bir karakterdir ama “nasılsın ?” bir stringtir ve içinde n,a,s,ı,l,s,ı,n, ,? karakterlerini barından bir veri tipidir.Burda dikkatinizi çekmek istediğim bir hususta karakterleri yazarken boşluğuda bir karakter olarak virgülle ayırmam. Boşlukta bir karakterdir.

String Nasıl Tanımlanır ?

Bir önceki yazımızda Swift değişken tanımlama ve veri tipleri , dersimizde Int , Double ,Float ,Booleans veri tiplerinin nasıl tanımlanabildiğini anlatmıştım String tanımlamanın ise pek bir farkı yok aynı şekilde tanımlayabilirsiniz.

var benimAdim = "Taha Eren" 
var benimSoyAdim: String = "Buyruk"

Önceki dersimizde belirttiğim gibi iki tanımlama arasında fark yoktur , ilk satırdaki tanımlamada derleyicimiz tanımladığımız değişkenin veri türünü verdiğimiz değere göre belirleyip String olduğunu anlamakta , diğerinde ise bu değişken String‘tir diye biz kendimiz belirtmekteyiz.Ve ilk string türündeki değişkenimizide tanımlamış olduk 🙂

İki String’i Birleştirme

Elimizde benimAdim ve benimSoyAdim adlı String türünde iki farklı değişkenimiz var ve biz bunları bir araya toplamak istiyoruz, o zaman iki değişkenimizi + operatörü ile toplarsak ne olur ?

var benimAdimVeSoyAdim = benimAdim + benimSoyAdim

Değişkenlerimizi ekrana bastırmak için print keyword’ünü kullanabiliriz.print yazdıktan sonra parantezlerin içine ekrana bastırmak istediğimiz değişkeni yazarak kullanabiliriz.

print(benimAdimVeSoyAdim)

Evet bu şekilde iki String‘i birleştirebildik.Şimdide başka bir şekilde birleştirmeyi deneyelim.Örneğin ileride yapacağımız uygulamalarımızda bir mesaj vermek istedi bu mesajın içeriğide “Merhaba hoş geldiniz ben , Taha Eren Buyruk” olsun . Bu mesajı elimizdeki değişkenler ile oluşturmaya çalışalım. Elimizde benimAdimVeSoyAdim adında adımızı ve soy adımızı barındıran bir değişkenimiz var . bunun önüne ” “Merhaba hoş geldiniz ben ,” kısmını eklememiz lazım. Şimdi string değişkeninin içine bir başka değişken yazdırarak yapmayı deneyelim.

var mesaj = "Merhaba hoş geldiniz ben , \(benimAdimVeSoyAdim)"

String’in içine \(değişkeninİsmi) şeklinde bir başka değişken yazabiliriz. Yukarıdaki mesaj değişkenini print komutu ile ekrana bastırıp karşılaştığınız sorun var ise yorumlardan yazabilirsiniz 🙂

String İçine String Yazma

Örneğin elimizde ismimizin olduğu bir string türünde değişkenimiz var ,

var isim = "Taha Eren"

Ve konsola “Merhaba benim adım Taha Eren” yazdırmak istiyoruz . Tabi ki bunu aşağıdaki şekilde yapabiliriz ,

print("Merhaba benim adım Taha Eren")

Ama bunun yerine tanımladığımız değişkeni kullanırsak hem yazdığımız kod daha güzel gözükür hem hata yapma ihtimalimiz azalır en önemlisi isim değişkenimiz’in içeriği değişince bunu sadece tanımladığımız yerde değiştirerek her yerde değişmesini sağlarız.Yukarıdaki gibi kullanırsak ismimizi yazdırdığımız her yerde değiştirmek zorunda kalırız.Peki bunu nasıl yapabiliriz ? İşte cevabı ,

print("Merhaba benim adım \(isim)")

\(değişkeninAdı) notasyonu ile stringimizin içerisine bir başka string türündeki değişkenimizi yukarıdaki gibi yazabiliyoruz. Peki “Merhaba benim adım Taha Eren 24 yaşındayım” nasıl yazdırabiliriz ? Int türündeki bir değişkenide aynı notasyon ile string içerisine yazdırabilir miyiz ? Yaşınızı tutan bir değişken tanımlayıp aynı notasyonu kullanarak yazdırmaya çalışabilirsiniz 🙂

Boş String Nasıl Oluşturulur ?

Boş bir string türünde bir değişken oluşturmak için aşağıdaki tanımlamaları kullanabiliriz.

var bosString = ""
var bosString2 = String()

bosString ve bosString değişkenleri String türündedir ve boşlardır. Peki bu değişkenlerin boş olup olmadığını nasıl anlayabiliriz işte cevabı ;

if bosString.isEmpty {
    print("String Değişkeni Boştur")
}else {
    print("String Değişkeni Boş Değildir")
}

If yapısı daha sonra anlatılacaktır . Bir önceki dersimizde kullandığımız if yapısına benzer bir kullanım ile , değişkenimizin ismini yazıp .(nokta)isEmpty komutu ile değişkenimizin boş olup olmadığını görebilmekteyiz . isEmpty türkçe karşılığı olarak “boş mu ?” olarak düşünülebilir. isEmpty ‘nin çalışma mantısı ise önünde yazdığınız değişkenin içerisinde karakter olup olmadığına bakarak boolean(true veya false) değer döndürür. Eğer içinde hiç karakter yok ise true değerini döndürür , en azından bir karakter -unutmayın ki ” ” boşlukta bir karakterdir- var ise false değerini döndürür. bu ifade ile derleyicimize bosString Boş mu ? diye bir soru sorarız oda bize evet(true) boş veya hayır(false) değerleri ile cevap verir. Şimdi Sizde benimAdim değişkeninin boş olup olmadığını deneyip ardından benimAdim değişkenine boş değer atayarak tekrar deneyebilir ve takıldığınız bir sorunuz olursa konunun altından yorum olarak yapabilirsiniz 🙂

String İçerisindeki Character’ler Nasıl Bulunur ?

Karakterleri bulmak için  ilerleyen derslerde anlatılacak  olan for döngüsü kullanabiliriz . Korkmayın karmaşık bir yapının aksine sade bir kullanım ile stringlerin içindeki karakterleri bulabileceğiz.

for karakter in benimAdim {
    print(karakter)
}

Yukarıda önceden tanımladığımız  benimAdim değişkeni içerisindeki her bir karakteri print ile ekrana bastırabiliyoruz.

String İçerisindeki Character’leri Sırasına Göre Nasıl Bulabiliriz ?

İlk olarak yeni bir değişken tanımlayalım.

var siteIsmi = "mobilhanem"

siteIsmi değişkenimizin ilk karakterini bulmak isteyelim peki ne yapmalıyız ? Satırlarca kod yazmak yerine aşağıdaki gibi tek satırda ilk elamanımızın(karakterimizin) ne olduğunu bulabiliriz.

siteIsmi[siteIsmi.startIndex]

Evet şimdide en sondaki karakteri bulmaya çalışalım ,

siteIsmi[siteIsmi.index(before: siteIsmi.endIndex)]

İlk ve son sıradaki karakterleri bulabildik peki ya diğerleri ?

let index = siteIsmi.index(siteIsmi.startIndex, offsetBy: 5)

print(siteIsmi[index])

Öncelikle sabit bir index değişkeni yaratıp , siteIsmi değişkenmizin başlangıç index’ini verip hangi sıradaki değeri bulmak istiyorsak onu index’e atıyoruz. Ve ardından siteIsmi[index] şeklinde karakterimizi ekrana bastırabiliriz.

Swift String ve Substring

String türündeki bir değişkenimizin içerisinden belli bir kısmını aldığımız zaman oluşan bu yapı Substring’tir. Substringler ile işlem yapmak oldukça hızlıdır. Stringler ile yaptığımız her işlemi Substring türündeki değişkenler ilede yapabiliriz.

String ve Substring

String ile substring arasındaki ilişki yukarıda bulunan görselimizdeki gibidir. “Herkese , Merhaba ” bir String iken bu stringten alınan “merhaba” kısmı ise Substring‘tir. Şimdi yukarıdaki işlemleri yapan swift kodumuzu yazalım .

let selamlamaMesaji = "Herkese, merhaba"
let index = selamlamaMesaji.index(of: ",") ?? selamlamaMesaji.endIndex
let sonuc = selamlamaMesaji[..<index]

selamlamaMesaji adında bir değişken yarattıktan sonra ayırmak istediğimiz karakteri belirttikten sonra belirttiğimiz karakterin index’ini buluyoruz. Ardından selamlamaMesaji ‘nın başlangıçtan , bulduğumuz index değerine kadar olan kısmını sonuc değişkenimize atıyoruz ve işlemimiz tamamlanmış oluyor 🙂

Substring’i String’e Çevirme

Yukarıda ki sonuc değişkenimizin türü substring’tir . Peki bunu string’e nasıl çevirebiliriz ?

let stringSonuc = String(sonuc)

Yukarıdaki gibi türü string olmayan değişkenleri String(DeğişkenAdı) notasyonu ile string’e çevirebiliriz . Peki Int ve ya Double olan değişkenleri bu şekilde string’e çevirebilir miyiz ? Kendiniz Double türünde bir değişken tanımlayıp çevirmeyi deneyebilir ve takıldığınız yerde yorum yapabilirsiniz 🙂

Swift String Karşılaştırma

İki string türündeki değişkenlerimizi birbirleriyle eşit olup olmadığına bakabiliriz.If yapısı kullanarak yapılmış bir örnek ;

let programlamaDili = "Swift"
let iosProgramlamaDili = "Swift"

if programlamaDili == iosProgramlamaDili {
    print("İki değişken birbirine eşittir")
}

Artık if yapılarına biraz aşina oldunuz . == operatörü , programlamaDili ve iosProgramlamaDili değişkenlerinin içeriğinin aynı olup olmamasına bakıp eşit ise true değilse false döndürür , bir başka deyişle derleyiciye programlamaDili ve iosProgramlamaDili değişkenleri eşit mi ? diye soruyoruz ve derleyicide bize eşit ise true değil ise false değerlerini döndürüyor ardından if bloğunda true olduğu için print(“İki değişken birbirine eşittir”) çalıştırılıyor. Bu iki değişken için eşit değil mi diye karşılaştırıp eşit değil ise ekrana “Bu iki değer eşit değildir” ifadesini yazdırabilirsiniz . (Ufak bir ipucu eşit değil operatörü != ) 🙂

String’e Character Ekleme

Elimizde bulunan bir string türündeki değişkene .append() ile değişkenimizin sonuna istediğimiz karakteri ekleyebiliriz.

var haberBasligi = "Şimdi Haberler"
haberBasligi.append("!")

Yukarıdaki gibi haberBasligi değişkenimizin sonuna “!” karakterini ekledik. Peki “!”  karakterini karakter türünde bir değişken yaratıp o iki değişkeni birleştirerek nasıl yapabiliriz ? Çözümlerinizi yorumlarda yazabilir ve takıldığınız yerleri sorabilirsiniz.

Swift String’lerin Karakter Sayılarını Bulma

Swift bize bunu kolaylıkla yapmamıza imkan sağlıyor.

print(haberBasligi.count)

Değişkenin isminin ardından .count diyerek değişkenin içerisindeki karakter sayısını direkt görebilir ve print komutu ile yukarda ki kod bloğunda olduğu gibi ekrana bastırabiliriz. count ‘ın türkçe karşılığı ise “sayısı” şeklinde düşünebiliriz. haberBasligi.count diyerek derleyiciye haberBasligi’nin sayısını bana ver diyoruz. Ve oda bizi kırmayıp değeri bize veriyor . Alıştırma için benimSoyAdim değişkeninin karakter sayısını bulabilirsiniz 🙂

Swift String ve Character konusuyla ilgili yorumlarınızı konu altından yapabilir, sorularınızı sorucevap.mobilhanem.com adresinden ve konu altından sorabilirsiniz.

Swift Eğitimleri serimizdeki tüm derslerin listesine buradan ulaşabilirsiniz.

Kaynak: https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/TheBasics.html#//apple_ref/doc/uid/TP40014097-CH5-ID309

57

Taha Eren Buyruk

Başkent Üniversitesi Bilgisayar Mühendisliği.

2 Yorum

  • Merhaba substring yazıyorum fakat sonuç olarak sağdaki ekranda tam kelime ayrılmıyor. Mesela “merhaba, nasılsın?” yazıyor aynı kodu girince sonuç olarak sadece “merha” diye görünüyor. Tam olarak nasıl bir kelimeyi çekip çıkarabileceğiz aradan? Atıyorum; “Selam ben Göktuğ” yazdım diyelim. bunun içinden sadece “ben” kelimesini nasıl çekip alabilirim?

    • “merhaba, nasılsın?” yazdığınızda da yine , ‘karakterine göre ayırdığımız için “merhaba” yazması gerekmektedir. Yazdığınız kodların üzerinden geçmenizi öneririm. İkinci sorunuz için ise string içerisinden bütün kelimeleri bir dizi ‘ye atıp ordan “ben” kelimesini çekebilirsiniz.

Haftalık Bülten

Mobilhanem'de yayınlanan dersleri haftalık mail almak ister misiniz?