2011-08-16 63 views
0

如何过滤数组并返回包含字符串某个部分的值?我有一个文本框,为了这个例子,用户输入25,然后点击“完成”按钮。通过数组过滤

例子:

Original Array {25-1002, 25-1005, 12-1003, 1000-0942, 1-1, 234-25} 

我希望它返回(通过它排序和拉我想要的值之后):

New Array {25-1002, 25-1005} 

请注意,原始数组中的最后一个值234-25也有25个,但没有穿过。它需要是连字符第一部分的数字。

在此先感谢!

+1

类似的答案就在这里:HTTP://计算器。 COM /问题/ 110332 /过滤-的NSArray-成-A-新的NSArray合目标c – pgb

回答

3

使用-filteredArrayUsingPredicate:方法,像这样:

NSString *searchText = [someField.text stringByAppendingString:@"-"]; 
newArray = [originalArray filteredArrayUsingPredicate:[NSPredicate predicateWithBlock:^(NSString *value, NSDictionary *bindings){ 
    return ([value rangeOfString:searchText].location != NSNotFound) 
}]]; 

注意,块(^{}事)不可预的iOS 4,所以你必须,如果你使用其他NSPredicate的构造函数”重新定位3.x设备。

1

一个易于理解的答案(不使用NSPredicate,它可以恐吓(但确实是正确的方式做到这一点)):

NSMutableArray *myNewArray = [[NSMutableArray alloc] init]; 
for (NSString *string in myArray) { 
    if([[string substringToIndex:3] isEqualToString @"25-"]) 
    { 
     [myNewArray addObject:string]; 
    } 
}