搜索NSStrings数组中的完整短语或单词

时间:2012-10-01 21:02:52

标签: objective-c search match nspredicate

我试图找到在数组中搜索整个短语或单词的方法。但它不起作用。例如:

我有NSMutableArray有2个元素:
元素1有一个键desc:“另一个元素的例子” 元素2有一个键desc:“另一个元素的例子”

我想搜索仅包含“其他”一词的元素。

如果我使用:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"desc like '*other*'"];

结果包括两个元素。

如果我搜索“* other *”,我会错过以“other”开头的描述(因为blanc)。

有人知道搜索确切单词或短语的功能,尽管它位于文本的开头,结尾,中间,尽管有“。”或“,”或“”“?

2 个答案:

答案 0 :(得分:0)

您需要的是完整的正则表达式匹配,matches提供此功能。尝试(未经测试):

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"desc matches '\\bother\\b'"];

r.e. \b匹配一个单词边界(上面是双反斜杠,因为它是Objective-C和正则表达式中的转义字符......)。请参阅Apple's docs for matches并点击ICU正则表达式指南的链接。

答案 1 :(得分:0)

我认为这种常规模式匹配将起作用:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"desc matches %@", @".*\\bother\\b.*"];