如何从字符串列表中查找特定字符串?

时间:2014-01-08 06:30:06

标签: ios iphone objective-c xcode core-data

我必须使用NSPredicate (CoreData)从字符串列表中获取特定字符串。例如: 如果我有CoreData

中的以下数组
  1. 的Helloworld

  2. helloworld1234

  3. helloworld 12345

  4. 从上面的列表中我只需要1和3作为结果。 我尝试了以下但是我得到了所有三个结果

    NSPredicate *predicate =[NSPredicate predicateWithFormat:@"contactName CONTAINS [c]%@",[arySeperator objectAtIndex:1]];
    NSArray *filteredArray1 = [arrayContacts filteredArrayUsingPredicate:predicate];
    

    我哪里错了?

3 个答案:

答案 0 :(得分:1)

要查找包含给定文本的所有条目作为“整个单词”,您可以使用 谓词“MATCHES”运算符,它与正则表达式匹配,并且 字边界模式\b

NSString *searchWord = @"Helloworld";
NSString *pattern = [NSString stringWithFormat:@".*\\b%@\\b.*", searchWord];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"contactName MATCHES[c] %@", pattern];

如果将此谓词添加到Core Data fetch请求,这也应该有效, 而不是过滤已经获取的托管对象数组。

答案 1 :(得分:0)

LIKE 左手表达式等于右手表达式:?和*被允许作为通配符,在哪里?匹配1个字符,*匹配0个或更多个字符。

NSString *textSearch = @"Raja";
NSPredicate *resultPredicate = [NSPredicate predicateWithFormat:@"firstname LIKE '*%1$@*' OR lastname LIKE '*%1$@*'", textSearch];

答案 2 :(得分:0)

您可以使用以下代码获取NSArray中是否存在字符串:

NSArray* yourArray = [NSArray arrayWithObjects: @"Str1", @"Str2", @"Str3", nil];
if ( [yourArray containsObject: yourStringToFind] ) {
    // do found
} else {
    // do not found
}