如何过滤数组并返回包含字符串特定部分的值?在这个示例中,我有一个文本框,用户在其中输入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];
}
}