我尝试查找包含带通配符的子字符串的字符串,例如字符串应包含'*'和'p'。同时字符串可以开始,结束并包含符号之间任意数量的字符。这是我的例子
let dataSource = [
"Domain CheckService",
"IMEI check",
"Compliant about service provider",
"Compliant about TRA",
"Enquires",
"Suggestion",
"SMS* Spam",
"Poor Coverage",
"Pure *Signal",
"Help Salim"
]
let searchString = "***p*"
let predicate = NSPredicate(format: "SELF LIKE %@", searchString)
let searchDataSource = dataSource.filter { predicate.evaluate(with: $0) }
我使用这样的掩码来查找满足条件的字符串:
any symbols + '*' + any symbols + 'p' + any symbols
但是此变体不起作用*是LAKE中的保留符号,因此结果我得到了错误的搜索集。那么这是一个问题吗?如何搜索带有'*'符号的子字符串。
答案 0 :(得分:1)
导致正确结果的变体:使用通配符与正则表达式中的转义符号相同,在通配符之前添加双反斜杠 正确的面具看起来像:
let searchString = "*\\**p*"