Swift 如何使'NSPredicate'在搜索中忽略某些字符
考试: 我将V«003»文本存储在核心数据id属性中 如果我将003或V003传递给NSPredicate,它将批准搜索,但由于«和»字符,NSFETCHTREQUEST无法找到该字段 如何忽略NSPredicate中的«和»字符Swift 如何使'NSPredicate'在搜索中忽略某些字符,swift,core-data,nspredicate,Swift,Core Data,Nspredicate,考试: 我将V«003»文本存储在核心数据id属性中 如果我将003或V003传递给NSPredicate,它将批准搜索,但由于«和»字符,NSFETCHTREQUEST无法找到该字段 如何忽略NSPredicate中的«和»字符 NSPredicate有正则表达式吗?使用正则表达式非常简单,问号表示可选字符 let pattern = "V«?003»?" NSPredicate(format: "id MATCHES %@", pattern) 编辑: 为了修复用户输入,我添加了«?»?在
NSPredicate有正则表达式吗?使用正则表达式非常简单,问号表示可选字符
let pattern = "V«?003»?"
NSPredicate(format: "id MATCHES %@", pattern)
编辑:
为了修复用户输入,我添加了«?»?在每个用户输入字符之间:
func generatePattern(item: String) -> String {
var str = ""
for st in item {
str.append(contentsOf: "«?»?")
str.append(st)
}
str.append(contentsOf: "«?»?")
return String(str)
}
你可以从这个链接找到答案。搜索前删除不需要的字符@Khushbu,这不是答案。由于NSFetchedResultsController,我无法使用两步筛选。@4kman,我在coredata中存储的数据中有那个坏字符,我不应该因为搜索而更改存储的数据。我只有用户输入的V003个字符,并且V字符不是静态的。不可能生成模式!对吗?如果V不是静态的,但003是静态的,则使用\\w«?003»\\w是一个任意字母数字字符。或者,如果您想将其限制为大写字母,请使用[A-Z]«?003»?因为后端设计不好,我认为最好使用«?003»?在每个角色之间。顺便说一句,谢谢你的新解决方案-