过滤同时出现在搜索字符串中的前缀和字符对应的数组
Filter arrays corresponding to prefix and characters present in search string simultaneously
我有一个字符串数组,如 [Duabi -united arab emirates,Kastanea - greece , turin - italy],我需要同时根据搜索字符串中的前缀和字符进行过滤。
当我搜索 "D" 时,它应该显示 "Dubai - united arab emirates",如果我搜索 'united',它也应该显示 "Dubai - united arab" emirates.
这是我所做的
self.filteredArray = self.dataArray.filter({ (country) -> Bool in
let countryText: NSString = country as NSString
return countryText.hasPrefix(searchString) || countryText.localizedCaseInsensitiveContains(searchString)
})
我需要前缀过滤的高优先级,如果前缀过滤没有结果,它应该检查是否包含字符串。
您当然不需要桥接 NSString
但 range(of
self.filteredArray = self.dataArray.filter{ [=10=].range(of: searchString, options: .caseInsensitive) != nil }
它搜索字符串而不考虑 prefix 或 contains,因为 range(of
查找 first 出现的字符串。实际上,您代码中的 prefix
搜索也是多余的
我有一个字符串数组,如 [Duabi -united arab emirates,Kastanea - greece , turin - italy],我需要同时根据搜索字符串中的前缀和字符进行过滤。 当我搜索 "D" 时,它应该显示 "Dubai - united arab emirates",如果我搜索 'united',它也应该显示 "Dubai - united arab" emirates.
这是我所做的
self.filteredArray = self.dataArray.filter({ (country) -> Bool in
let countryText: NSString = country as NSString
return countryText.hasPrefix(searchString) || countryText.localizedCaseInsensitiveContains(searchString)
})
我需要前缀过滤的高优先级,如果前缀过滤没有结果,它应该检查是否包含字符串。
您当然不需要桥接 NSString
但 range(of
self.filteredArray = self.dataArray.filter{ [=10=].range(of: searchString, options: .caseInsensitive) != nil }
它搜索字符串而不考虑 prefix 或 contains,因为 range(of
查找 first 出现的字符串。实际上,您代码中的 prefix
搜索也是多余的