Filter Through Array



如何过滤数组并返回包含字符串特定部分的值?在这个示例中,我有一个文本框,用户在其中输入25,然后点击"Done"按钮。

的例子:

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

我想让它返回(在对它进行排序并提取我想要的值之后):

New Array {25-1002, 25-1005}

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

提前感谢!

使用-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。

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

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

最新更新