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];

filteredArrayUsingPredicate: を使用して簡単にフィルタリングできます。たとえば、@"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 に答える