我正在使用一系列成分(盐,水,面粉,糖),并且想要搜索此字符串以查看列表中是否有特定项目(盐,面粉)
这是到目前为止的代码
let ingredientList = (JSONDictionary as NSDictionary)["nf_ingredient_statement"] as! String
if ingredientList.lowercaseString.rangeOfString("salt") != nil {
print("Salt Found!")
}
在不重复if语句的情况下,实现搜索多个子字符串的最佳方法是什么?
实际项目将搜索十几个子字符串,12个if语句是一个非常尴尬的解决方案。
答案 0 :(得分:4)
你应该使用for循环。
for ingredient in ["salt", "pepper"] {
if ingredientList.rangeOfString(ingredient) != nil {
print("\(ingredient) found")
}
}
更好的是,将此for循环添加为String类的扩展名。
extension String {
func findOccurrencesOf(items: [String]) -> [String] {
var occurrences: [String] = []
for item in items {
if self.rangeOfString(item) != nil {
occurrences.append(item)
}
}
return occurrences
}
}
然后你可以得到这样的事件:
var items = igredientList.findOccurrencesOf(["salt", "pepper"])