筛选包含指定字符串的数组

时间:2012-08-22 15:25:40

标签: iphone objective-c ios filter

我正在尝试开发一个包含大量单词数组的应用程序。我想从中创建一个新的过滤数组。过滤是基于我使用正则表达式创建的模式完成的。例如,我应该能够用我的数组中的模式“ap_l_”过滤出单词“apple”。谁能帮我吗?

4 个答案:

答案 0 :(得分:6)

使用以下代码过滤数组

-(NSMutableArray *)searchByContains:(NSString *)containsString inputArray:(NSMutableArray *)inputArray
{
    NSLog(@"orginal Array count=%d",[inputArray count]);
    NSString *expression=[NSString stringWithFormat:@"SELF contains '%@'",containsString];
    NSLog(@"expression=%@",expression);
    NSPredicate *predicate = [NSPredicate predicateWithFormat:expression];    
    NSMutableArray *mArrayFiltered = [[inputArray filteredArrayUsingPredicate:predicate] mutableCopy];

    return mArrayFiltered;
}

答案 1 :(得分:2)

过滤数组的最佳方法是使用谓词。如果您有一个字符串数组,例如:

NSArray *stringsArray = [NSArray arrayWithObjects:@"Joe", @"Bill", @"David", @"Jeff", nil];

您可以使用filteredArrayUsingPredicate:轻松过滤它。例如,如果你想为@“Bill”的所有实例过滤上面的数组,你可以这样做:

NSArray *filteredArray = [stringsArray filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"SELF == 'Bill'"]];

如果您要过滤OUT @“Bill”,那么您可以这样做:

filteredArray = [stringsArray filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"SELF != 'Bill'"]];

等等。

答案 2 :(得分:1)

如果所有元素都是字符串,则可以使用。

for(NSString *str in arrayName)
  {
      if([str isEqualToString:@"searchString"])
         {

            //wirte own code here
         }



  }

答案 3 :(得分:1)

如果我理解你的问题......试试这个

if([your_array containsObject: your_string]){
      do something
}

希望这会有所帮助

相关问题