Swift 4 için güncellendi
Bir dizenin neyle başladığını ve neyle bittiğini kontrol etme
Başka bir String ile eşitliği test etmek için hasPrefix(_:)ve hasSuffix(_:)yöntemlerini kullanabilirsiniz .
let str = "Hello, playground"
if str.hasPrefix("Hello") { // true
print("Prefix exists")
}
if str.hasSuffix("ground") { // true
print("Suffix exists")
}
Gerçek Önek ve Sonek Alt Dizelerini Alma
Gerçek öneki veya sonek alt dizesini elde etmek için aşağıdaki yöntemlerden birini kullanabilirsiniz. Basit olması için ilk yöntemi öneriyorum. Tüm yöntemler şu şekilde kullanılır str:
let str = "Hello, playground"
Yöntem 1: (Önerilen) prefix(Int)vesuffix(Int)
let prefix = String(str.prefix(5)) // Hello
let suffix = String(str.suffix(6)) // ground
Bence bu daha iyi bir yöntem. Aşağıdaki 2. ve 3. yöntemlerin aksine, dizinler sınırların dışına çıkarsa bu yöntem çökmeyecektir. Yalnızca dizedeki tüm karakterleri döndürür.
let prefix = String(str.prefix(225)) // Hello, playground
let suffix = String(str.suffix(623)) // Hello, playground
Elbette bazen kilitlenmeler iyidir çünkü kodunuzla ilgili bir sorun olduğunu size bildirirler. Bu yüzden aşağıdaki ikinci yöntemi de düşünün. Endeks sınırların dışına çıkarsa hata verir.
Yöntem 2: prefix(upto:)vesuffix(from:)
Swift String dizinleri aldatıcıdır çünkü özel karakterleri (emoji gibi) hesaba katmaları gerekir. Ancak dizini aldıktan sonra ön ek veya son eki almak kolaydır. (Bkz benim diğer cevabı üzerine String.Index.)
let prefixIndex = str.index(str.startIndex, offsetBy: 5)
let prefix = String(str.prefix(upTo: prefixIndex)) // Hello
let suffixIndex = str.index(str.endIndex, offsetBy: -6)
let suffix = String(str.suffix(from: suffixIndex)) // ground
Sınırların dışına çıkmaya karşı korunmak istiyorsanız, kullanarak bir dizin oluşturabilirsiniz limitedBy(yine, bu yanıta bakın ).
Yöntem 3: abonelikler
String bir koleksiyon olduğundan, öneki ve soneki almak için abonelikleri kullanabilirsiniz.
let prefixIndex = str.index(str.startIndex, offsetBy: 5)
let prefix = String(str[..<prefixIndex]) // Hello
let suffixIndex = str.index(str.endIndex, offsetBy: -6)
let suffix = String(str[suffixIndex...]) // ground
Daha fazla okuma