【发布时间】:2012-08-18 01:45:49
【问题描述】:
我正在尝试开发一个包含包含大量单词的数组的应用程序。我想从中创建一个新的过滤数组。过滤是基于我使用正则表达式创建的模式完成的。例如,我应该能够从带有单词的数组中过滤掉带有模式“ap_l_”的单词“apple”。谁能帮我吗?
【问题讨论】:
-
你这是什么意思?您需要提供更多信息。
标签: iphone objective-c ios filter
我正在尝试开发一个包含包含大量单词的数组的应用程序。我想从中创建一个新的过滤数组。过滤是基于我使用正则表达式创建的模式完成的。例如,我应该能够从带有单词的数组中过滤掉带有模式“ap_l_”的单词“apple”。谁能帮我吗?
【问题讨论】:
标签: iphone objective-c ios filter
使用下面的代码过滤数组
-(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;
}
【讨论】:
过滤数组的最佳方法是使用谓词。如果你有一个字符串数组,例如:
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'"]];
等等。
【讨论】:
如果所有元素都是字符串,则可以使用。
for(NSString *str in arrayName)
{
if([str isEqualToString:@"searchString"])
{
//wirte own code here
}
}
【讨论】:
如果我理解你的问题...试试这个
if([your_array containsObject: your_string]){
do something
}
希望对你有帮助
【讨论】: