如何过滤数组并返回包含字符串某个部分的值?我有一个文本框,为了这个例子,用户输入25,然后点击“完成”按钮。
示例:
Original Array {25-1002, 25-1005, 12-1003, 1000-0942, 1-1, 234-25}
我希望它返回(在对其进行排序并拉出我想要的值之后):
New Array {25-1002, 25-1005}
请注意,在原始数组中,234-25
的最后一个值也包含25,但未通过。它必须是连字符第一部分的数字。
提前致谢!
答案 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];
}
}