gpt4 book ai didi

ios - 我如何使用 NSPredicate 从数组中选择一个确切的短语?

转载 作者:可可西里 更新时间:2023-11-01 04:22:16 25 4
gpt4 key购买 nike

我正在使用 NSPredicate 按州和国家列表过滤 NSDictionary。

所有数据都存储在逗号分隔的数组中:@"Alabama"、@"Alaska"、@"Arizona"、@"Arkansas"、@"California"、@"Colorado"等

但是,有 2 种情况会出现重复。 “新墨西哥”州包含“墨西哥”一词,“阿肯色州”包含“堪萨斯州”一词。

这是我用来定义谓词的基本代码。

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"Location contains[c] %@", @"Kansas"];

如何确保“Kansas”不会返回带有“Arkansas”的对象?使用 BEGINSWITH 或 LIKE 不起作用,因为列表以其他状态开始。

谢谢!

最佳答案

让我们看看我是否理解正确。您有一本字典,其中有一个键“Location”,其对象是一个以逗号分隔的状态名称的字符串。听起来你需要一个正则表达式来匹配。

NSString* expr = [NSString stringWithFormat:@"^%1$@.*|.*, %1$@.*", @"Kansas"]  
NSPredicate* predicate = [NSPredicate predicateWithFormat:@"Location MATCHES[c] %@", expr];

现在,这是它在不同示例中的行为方式:

@{@"Location": @"Kansas, Arkansas, Alabama"} //Pass
@{@"Location": @"Alabama, Kansas"} //Pass
@{@"Location": @"Arkansas, Alabama"} //Fail

正则表达式 ^%1$@.*|.*, %1$@.* 测试提供的单词是在字符串的开头还是后跟字符和“, ",这将它放在中间。 %1$@ 采用第一个参数,因此它可以多次使用,而不是多次提供相同的字符串。

关于ios - 我如何使用 NSPredicate 从数组中选择一个确切的短语?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24460724/

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