Swift Notları — 5 String Metotlar ( Fonksiyonlar )

Çağatay Yıldız
BilgeAdam Teknoloji
4 min readApr 14, 2022

Birçok yazılım dilinde olduğu gibi Swift dilinde string metotlar oldukça önemli. Dilin genel string metotları dışında özel bir indexleme mantığı da var. Genel olarak metotlar ve kullanımları şu şekilde:

uppercased

Mevcut metni büyültür ve büyüttüğü metni return eder.

let name = "Iron Maiden"
let newName = name.uppercased()
// IRON MAIDEN

lowercased

Mevcut metni küçültür ve küçülttüğü metni return eder.

let name = "GoJiRa"
let newName = name.lowercased()
// gojira

Contains

Dışarıdan bir karakter alan ve bu karakterin mevcut metinde olup olmadığına bakan metot. Metot boolean bir değer return eder.

let name = "Furtherial"let result : Bool = name.contains("e")//true olarak return eder.

Index Mantığı ( Indices )

Swift dilinde string bir metnin herhangi bir karakterine karşılık dilde String.Index adında bir struct mevcut. Yani her karakterin özel bir index karşılığı var ve bu karşılık bazı dillerde alıştığımız gibi int bir değer DEĞİL. Dil karakter karşılıklarında özel bir sözdizimi kullandığı için sayısal bir değer kullanılmadığını belirtiyor. Karakter depolamada bellek kullanımının böylelikle daha sağlıklı olduğunu belirtmekte. Kaynak olarak aşağıya bazı linkleri bırakıyorum

startIndex özelliği

Metnin ilk karakterinin index karşılığını verir.

let name = "Lamb of God"let startIndex : String.Index = name.startIndex

endIndex özelliği

Metnin son karakterinin index karşılığını verir.

let name = "Asafated"let endIndex : String.Index = name.endIndex

firstIndex

Metot içerisine aldığı karakterin index numarasını bize verir. Eğer metnin içerisinde birden fazla karakter varsa bunlardan ilkinin index numarasını verir.

let name = "Rotting Christ"
let indexNo = name.firstIndex(of: "t")

Not: Eğer herhangi bir index bulamazsa nil döner.

lastIndex

Metot içerisine aldığı karakterin index numarasını bize verir. Eğer metnin içerisinde birden fazla karakter varsa bunlardan sonuncusunun index numarasını verir.

let name = "Dimmu Borgir"
let indexNo = name.firstIndex(of: "t")

Not: Eğer herhangi bir index bulamazsa nil döner.

Index

Index metodu string parçalama işlerinde en çok kullanılan metot. ( Diğer dillerdeki subString mantığını da düşünebiliriz. )

Örneğin mevcut karakterden belirli bir uzunluktan sonraki karakterin index numarasını bulmak istiyoruz. Aşağıdaki metinde telefonun son iki numarasını bulmak istediğimizi varsayalım.

let name = "Amon Amarth!"let startIndex  = name.startIndex//Bu kod bloğu ile ikinci kelimenin baş harfinin index numarasını bulduklet index = name.index(startIndex, offsetBy: 5)

Range Mantığı

Bulunan index numaraları ile çeşitli syntax lar kullanarak metnin belirli bir aralığını almamız mümkün. Yukarıdaki koda devam edip birinci kelimeyi ekrana yazdırmak istersek :

let name = "Amon Amarth!"let startIndex  = name.startIndex//Bu kod bloğu ile ikinci kelimenin baş harfinin index numarasını bulduklet index = name.index(startIndex, offsetBy: 5)let result = name[..<index]//result değişkeni ekrana "Amon" yazacaktır.

Bir diğer örnekte ise firstIndex ve lastIndex kullanarak belirli bir aralık tanımlayacağız ve o aralıktaki metni alacağız

let university = "Bahçeşehir Üniversitesi"let startUniIndex = university.firstIndex(of: "Ü")let endUniIndex = university.lastIndex(of: "s")let range = startUniIndex!..<endUniIndex!let uniResult = university[range]

prefix

Metot dışarıdan aldığı index numarasına kadar olan metni ekrana yazdırır. upTo label ını kullanarak yukarıdaki örneğin farklı bir yanıtını yazabiliriz.

let result = hello.prefix(upTo: index)
let result let result = hello.prefix(4)

suffix

Bu metot prefixin tersine index numarasına kadar olan metni alırken son karakterden başlar. Sondan belirtilen index numarasına göre gidip o metni alır.

let index = name.index(startIndex, offsetBy: 4)let result = name.suffix(from: index)

Diğer Metotlar ve Özellikler

append

Mevcut bir metne başka bir metin eklemek için kullanılabilir.

var name = "Razor "
var secondName = "Offical"

name.append(secondName)
print(name)

count özelliği

Metindeki karakter sayısını alır.

var name = "Pantera"print(name.count)

capitalized

Bu özellik mevcut metnin ilk karakterini büyültür. Özellikle isim, soyisim gibi işlemlerde oldukça kullanılır.

hasPrefix

Bu metot metnin o kelimeyle başlayıp başlamadığını kontrol eder ve ona göre true veya false döner.

let name = "Parkway Drive"
print(name.hasPrefix("Parkway"))

hasSuffix

Bu metot metnin o kelimeyle bitip bitmediğini kontrol eder ve ona göre true veya false döner.

let name = "Ghost Brigade"
print(name.hasSuffix("Brigade"))

elementsEqual

İki metni karşılaştırıp metinler aynı ise true değilse false döner. trimmingCharacters

var name1= "Megaherz"
var name2 = "Megaherz"
var result = name1.elementsEqual(name2)print(result)

// Output: true

trimmingCharacters

Metnin başlamadan önceki ve bittikten sonraki boşluklarını temizler.

var message = "   Bruce Dickinson is very funny    "// remove leading and trailing whitespaces
var newMessage = message.trimmingCharacters(in: .whitespaces)
print(newMessage)

// Output: Bruce Dickinson is very funny

split

Split metodu ile metnin içerisinde belirtilen karakterlere göre metni bir diziye çevirir.

var text = "Swift is a fun programming language"// split the text from space
print(text.split(separator: " "))
// Output: ["Swift", "is", "a", "fun", "programming", "language"]

reversed

Mevcut metindeki karakterleri ters çevirir.

let name = "Machine Head"let result = String(name.reversed())print(result)// Output: edagirB tsohG

replacingOccurrences

Bu metot ile hedef bir karakteri veya metni belirttiğimiz karakter veya metinle replace edebiliriz.

import Foundation
var str1 = "bat ball"
// replace b with c
print(str1.replacingOccurrences(of: "b",with: "c"))
// Output: cat callvar text = "Java is awesome. Java is fun."// all occurrences of "Java" is replaced with "Swift"
var new = text.replacingOccurrences(of:"Java", with: "Swift")
print(new)// "Python" is not the substring of text , so returns original string
var new1 = text.replacingOccurrences(of:"Python", with: "Swift")
print(new1)

Kaynaklar:

--

--