gpt4 book ai didi

ios - RegEx:如何在 NSPredicate 中使用正则表达式?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:22:56 24 4
gpt4 key购买 nike

我有一个 TableView ,按人名属性显示行。表格 View 允许用户按名称进行繁琐的搜索。例如如果用户输入“crp”,它将匹配姓名“Chris Paul”。

我有一个方法,它接受一个搜索字符串并设置 NSPredicate 以在数组中搜索模型的名称

- (void)setPredicateWithText: (NSString *)searchText
{

for (int i = 0; i < searchText.length; i ++)
{
NSString *character = [searchText substringWithRange:NSMakeRange(i, 1)];
self.format = [self.format stringByAppendingFormat:@".*%@",character];

if (i == searchText.length -1) // last character
{
self.format = [self.format stringByAppendingString:@".*"];
}
}
// result format == .*c.*r.*p.*
self.searchPredicate = [NSPredicate predicateWithFormat:@"SELF.name MATCHES '%@'", self.format];
}

和其他方法:

 self.resultArray = [self.allPlayers filteredArrayUsingPredicate:self.searchPredicate];

但没有任何结果...请帮助我,谢谢!!

最佳答案

问题解决

您应该在代码中更改两件事,

1) 用 %@ 替换 '%@'

2) 添加[c]忽略大小写


谓词应该是这样的,

[NSPredicate predicateWithFormat:@"SELF.name MATCHES [c] %@", self.format];

最后是方法,

- (void)setPredicateWithText: (NSString *)searchText
{

for (int i = 0; i < searchText.length; i ++)
{
NSString *character = [searchText substringWithRange:NSMakeRange(i, 1)];
self.format = [self.format stringByAppendingFormat:@".*%@",character];

if (i == searchText.length -1) // last character
{
self.format = [self.format stringByAppendingString:@".*"];
}
}
// result format == .*c.*r.*p.*
self.searchPredicate = [NSPredicate predicateWithFormat:@"SELF.name MATCHES [c] %@", self.format];
}

关于ios - RegEx:如何在 NSPredicate 中使用正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16474674/

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