通过数组过滤

时间:2011-08-16 19:27:25

标签: iphone objective-c xcode

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

示例:

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

我希望它返回(在对其进行排序并拉出我想要的值之后):

New Array {25-1002, 25-1005}

请注意,在原始数组中,234-25的最后一个值也包含25,但未通过。它必须是连字符第一部分的数字。

提前致谢!

2 个答案:

答案 0 :(得分:3)

使用-filteredArrayUsingPredicate:方法,如下所示:

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

请注意,在iOS 4之前无法使用块(^{}),因此如果您的目标是3.x设备,则必须使用NSPredicate的另一个构造函数。

答案 1 :(得分:1)

作为一个易于理解的答案(不使用NSPredicate,这可能是令人生畏的(但实际上是正确的方法)):

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