arrays – Array包含一个完整的子数组
发布时间:2020-12-14 05:01:22 所属栏目:百科 来源:网络整理
导读:在 Swift中,如何检查数组是否包含完整的给定子数组?例如,是否有一个包含这样的函数: let mainArray = ["hello","world","it's","a","beautiful","day"]contains(mainArray,["world","it's"]) // would return truecontains(mainArray,"it"]) // would retu
|
在
Swift中,如何检查数组是否包含完整的给定子数组?例如,是否有一个包含这样的函数:
let mainArray = ["hello","world","it's","a","beautiful","day"] contains(mainArray,["world","it's"]) // would return true contains(mainArray,"it"]) // would return false contains(mainArray,"a"]) // would return false - not adjacent in mainArray 解决方法
您可以使用更高级别的功能来执行此操作,如下所示:
func indexOf(data:[String],_ part:[String]) -> Int? {
// This is to prevent construction of a range from zero to negative
if part.count > data.count {
return nil
}
// The index of the match could not exceed data.count-part.count
return (0...data.count-part.count).indexOf {ind in
// Construct a sub-array from current index,// and compare its content to what we are looking for.
[String](data[ind..<ind+part.count]) == part
}
}
此函数返回第一个匹配的索引(如果有),否则返回nil. 您可以按如下方式使用它: let mainArray = ["hello","day"]
if let index = indexOf(mainArray,"it's"]) {
print("Found match at (index)")
} else {
print("No match")
}
编辑为通用数组的扩展… 现在可以将其用于Equatable类型的任何同类数组. extension Array where Element : Equatable {
func indexOfContiguous(subArray:[Element]) -> Int? {
// This is to prevent construction of a range from zero to negative
if subArray.count > self.count {
return nil
}
// The index of the match could not exceed data.count-part.count
return (0...self.count-subArray.count).indexOf { ind in
// Construct a sub-array from current index,// and compare its content to what we are looking for.
[Element](self[ind..<ind+subArray.count]) == subArray
}
}
}
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
