サルタンの提案(vadianの2番目のアプローチ)を使用したいが、少し一般的なものにしたい場合は、文字列の最初の部分を区切り文字まで抽出してから使用することができます
:あなたは、名前の一部と「形態学」の部分でタプルにあなたの元の配列をマップするコードを書くことができ
firstParts = ["Tommy", "Bob", "Jack", "Rob"]
:結果を与える
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)")
私はコードが欠落しているサフィックスを取り扱うことを確認するために、「トミー・ノーマル」の「-normal」の部分を削除したデータの私のバージョン、で
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
サンプルコードを提供できるのであれば、本当に感謝します。それはあなたのやり方です。 –