gpt4 book ai didi

ios - SearchBar 在过滤时忽略字符

转载 作者:行者123 更新时间:2023-11-29 11:39:16 27 4
gpt4 key购买 nike

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

例子:

array = [“一”、“二”、“三”]

人搜索“t”:没有返回

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

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

最佳答案

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

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

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

person searches “three” : search returns “three-”.

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

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

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

person searches “three” : search returns “”.

但是

person searches “three-” : search returns “three-”.

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

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

最后,我认为如果您在显示时使用 contains with trimming,那是您的最佳选择。

关于ios - SearchBar 在过滤时忽略字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47505482/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com