【问题标题】:SearchBar ignore character while filteringSearchBar 过滤时忽略字符
【发布时间】:2017-11-27 07:04:35
【问题描述】:

我有一个填充了字符串类型数组的 tableView。字符串中的某些单词包含连字符 (-)。我知道我可以过滤一个 tableView 并让它根据需要删除这个字符。是否可以在搜索过程中忽略该字符但它仍然出现在 tableView 中?我有兴趣通过精确的单词搜索而不是 .contains 参数进行过滤。

例子:

数组 = [“一”、“二”、“三-”]

人搜索“t”:没有返回

人搜索“二”:搜索返回“二”

人搜索“三”:搜索返回“三-”

【问题讨论】:

标签: ios uitableview filtering uisearchbar swift4


【解决方案1】:

如果您想使用CONTAINS[c]MATCHES 进行过滤,这里有两种方法,这里是NSPredicate 的示例:

    let searchPredicate = NSPredicate(format: "SELF CONTAINS[c] %@", searchController.searchBar.text!)
    let array = (self.array as NSArray).filtered(using: searchPredicate)

现在使用 Contains 将根据包含您所说的关键字的字符串进行过滤,因此将返回 3- 因为用户搜索了三个:

人搜索“三”:搜索返回“三-”。

另一种方法是使用 MATCHES,这里是一个例子:

    let searchPredicate = NSPredicate(format: "SELF MATCHES %@", searchController.searchBar.text!)
    let array = (self.array as NSArray).filtered(using: searchPredicate)

如果我以你的例子为例,如果它与搜索键完全相同,则使用匹配项将返回结果:

人搜索“三”:搜索返回“”。

但是

人搜索“三-”:搜索返回“三-”。

现在,如果您想在显示时忽略该字符,则可以在 cellForRow 中找到它时对其进行修剪:

if string.contains("-"){
     let trimmedString = string.replacingOccurrences(of: "-", with: "")
}

最后,我认为如果您在显示时使用包含修剪,那是您的最佳选择。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-15
    • 2017-01-08
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    • 2020-05-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多