如果你想使用Sulthan的建議(vadian的第二種方法)來做到這一點,但是想讓它稍微更通用一些,你可以創建一個函數來提取字符串的第一部分直到分隔符,然後使用:
func firstPart(of aString: String, separator: String) -> String {
if let range = aString.range(of: separator) {
return aString.substring(to: range.lowerBound)
}
return aString
}
let names = ["Tommy", "Bob-fat", "Jack-skinny", "Rob-obese"]
let firstParts: [String] = names.map {
firstPart(of: $0, separator: "-")
}
print("firstParts = \(firstParts)")
這給出結果:
firstParts = ["Tommy", "Bob", "Jack", "Rob"]
你也可以寫你的原始數組映射到元組的名稱部分和「形態」的部分代碼:
let tuples = names
.map{$0.components(separatedBy: "-")}
.map{(name:$0[0], morphology: $0.count > 1 ? $0[1] : "unkown morphology")}
tuples.forEach{ print($0.name + " is " + $0.morphology) }
隨着我的版本的數據,在這裏我刪的「湯米 - 正常」的「 - 正常」的一部分,以確保代碼來處理丟失的後綴,我得到:
Tommy is unkown morphology
Bob is fat
Jack is skinny
Rob is obese
查找索引那個字符,把這個前綴加到那個索引上。 – Sulthan
如果您可以提供示例代碼,我們將非常感激。按照你的方式去做。 –