如果你想使用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
如果您可以提供示例代码,我们将非常感激。按照你的方式去做。 –