【问题标题】:Filter the array that contains the specified string [closed]过滤包含指定字符串的数组[关闭]
【发布时间】:2012-08-18 01:45:49
【问题描述】:

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

【问题讨论】:

标签: iphone objective-c ios filter


【解决方案1】:

使用下面的代码过滤数组

-(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;
}

【讨论】:

    【解决方案2】:

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

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

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

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

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

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

    等等。

    【讨论】:

      【解决方案3】:

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

      for(NSString *str in arrayName)
        {
            if([str isEqualToString:@"searchString"])
               {
      
                  //wirte own code here
               }
      
      
      
        }
      

      【讨论】:

        【解决方案4】:

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

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

        希望对你有帮助

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-10-06
          • 1970-01-01
          • 1970-01-01
          • 2014-05-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多