2011-08-16 142 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]; 
    } 
}