0

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

4

4 回答 4

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;
}
于 2012-08-22T16:28:36.347 回答
2

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

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

您可以使用 filtersArrayUsingPredicate: 轻松过滤它。例如,如果您想为所有 @"Bill" 实例过滤上述数组,您可以这样做:

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

如果你想过滤 OUT @"Bill",那么你可以这样做:

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

等等。

于 2012-08-22T15:48:12.750 回答
1

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

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

            //wirte own code here
         }



  }
于 2012-08-22T15:31:47.733 回答
1

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

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

希望这可以帮助

于 2012-08-22T15:34:36.853 回答