使用特殊字符搜索

时间:2017-10-03 15:26:49

标签: swift search character

一般的swift和编程新手。我有这个searchBar函数,它搜索输入的内容和tableView内容。我注意到它不适用于特殊字符。例如:我有一个tableView,其中Hon是文本的名称。当我在搜索栏上键入Hon时,Hon会出现在tableView的列表中。但是,当我键入Hon(使用撇号)时,tableView会列出所有内容并且它没有正确搜索它。我希望只有Hon才能出现。我如何修复下面的代码?

public func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
    filteredData = all.filter({ (text) -> Bool in
        let tmp: NSString = text as NSString
        let range = tmp.range(of: searchText, options: .caseInsensitive)
        return range.location != NSNotFound
    })
    if filteredData.count == 0 {
        searchActive = false
    } else {
        searchActive = true
    }
    self.tableView.reloadData()
}

1 个答案:

答案 0 :(得分:0)

试试这个:

let text = "Hon's Shop"
let searchText = "Hon's"//works for "Hon" also
let found = text.lowercased().contains(searchText.lowercased())//returns true

因此,您可以将过滤器修改为:

filteredData = all.filter({ (text) -> Bool in
   return text.lowercased().contains(searchText.lowercased())
})

<强>更新 正如Leo所提到的,你只能将return语句更改为:

return range != nil

但是使用我的建议你可以缩短代码!