Swift'de bir dize içinde son sözcüğü ayıklamanın yolu nedir? Yani eğer "Lorem ipsum dolor sit amet" varsa, "amet" i geri dönün. Bunu yapmanın en etkili yolu nedir?Dize ile Son Sözlüğü Ayıkla Özgü Sözlüğü
7
A
cevap
10
String yöntemi enumerateSubstringsInRange kullanabilirsiniz. İlk parametre sadece String characters.indices'ınızı ve .ByWords. Her bir alt dizgiyi son diziye eklemeniz ve geri göndermeniz yeterlidir.
Xcode 8.1 • Swift 3.0.1 veya daha
extension String {
var byWords: [String] {
var byWords:[String] = []
enumerateSubstrings(in: startIndex..<endIndex, options: .byWords) {
guard let word = $0 else { return }
print($1,$2,$3)
byWords.append(word)
}
return byWords
}
func firstWords(_ max: Int) -> [String] {
return Array(byWords.prefix(max))
}
var firstWord: String {
return byWords.first ?? ""
}
func lastWords(_ max: Int) -> [String] {
return Array(byWords.suffix(max))
}
var lastWord: String {
return byWords.last ?? ""
}
}
Kullanım:
let sentence = "Out of this world!!!"
let firstWord = sentence.firstWord // "Out"
let lastWord = sentence.lastWord // world"
let words = sentence.byWords // ["Out", "of", "this", "world"]
let first2Words = sentence.firstWords(2) // ["Out", "of"]
let last2Words = sentence.lastWords(2) // ["this", "world"]
Swift 2
extension String {
var byWords: [String] {
var result:[String] = []
enumerateSubstringsInRange(characters.indices, options: .ByWords) {
guard let substring = $0.substring else { return }
result.append(substring)
}
return result
}
}
3
İlk kullanım componentsSeparatedByString
boşlukla bir diziye içine dize bölmek için, daha sonra boşluk karakter kümesi Ben de componentsSeparatedByCharactersInSet
kullanmayı düşünün .last
var string = "Lorem ipsum dolor sit amet"
var stringArr = string.componentsSeparatedByString(" ")
var lastWord = stringArr.last //amet
4
kullanarak ve dizinin son sözü:
let string = "Lorem ipsum dolor sit amet"
let stringArray = string.componentsSeparatedByCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())
print(stringArray.last)
7
Vakıf sınıflarını eklemek istiyorsanız diğer cevaplar iyidir. 3
Swift:
let str = "Lorem ipsum dolor sit amet"
let split = str.characters.split(separator: " ")
let last = String(split.suffix(1).joined(separator: [" "]))
let lastTwo = String(split.suffix(2).joined(separator: [" "]))
print(last) // -> "amet"
print(lastTwo) // -> "sit amet”
Swift 2: Daha sonra Swift okunur sınıfları kullanmak istiyorsanız bu şekilde bunu yapabilir
let str = "Lorem ipsum dolor sit amet"
let split = str.characters.split(Character(" "))
let last = String(split.suffix(1).joinWithSeparator([" "]))
let lastTwo = String(split.suffix(2).joinWithSeparator([" "]))
print(last) // -> "amet"
print(lastTwo) // -> "sit amet"
Büyük teşekkürler! Bence cevap kabul edilen kişi olmalı. – senty