iOS:如何分离数组中的特定字符串元素?

时间:2016-12-15 10:14:47

标签: ios objective-c arrays string

我从服务器得到以下回复:

[{"bp":"000/000","dateTime":"05/12/2016 01:02:59 PM","doc":{"email_id":"batra@gmail.com","exception":0,"gender":"Male","id":0,"mobile_no":8055621745,"name":"Batra","profile_id":0,"qualification":"MD(Doctor)","reg_id":157,"salutation":"Mr","wellness_id":"251215782521"},"follow_up":"17","id":37,"medicine":["Syrup,Decold Total,20,0-0-1,Before Meal,1","Injection,Insulin,1,0-0-1,Before Meal,1","no","no","no","no","no","no","no","no"],"patient":{"email_id":"bishtrohit1989@gmail.com","exception":0,"gender":"Male","id":0,"mobile_no":8055621745,"name":"Rohit","profile_id":0,"qualification":"","reg_id":150,"salutation":"Mr","wellness_id":"290119935030"},"weight":"000"}]

由此我将medicine数组分开,如下所示:

NSMutableArray *Myarray = [NSMutableArray new];
for (int i=0; i<_menuItems.count; i++) {
    [Myarray addObject:[[_menuItems objectAtIndex:i] objectForKey:@"medicine"]];
    NSLog(@"medicine: %@",Myarray);

我输出的内容如下:

medicine: (
        (
        "Syrup,Decold Total,20,0-0-1,Before Meal,1",
        "Injection,Insulin,1,0-0-1,Before Meal,1",
        no,
        no,
        no,
        no,
        no,
        no,
        no,
        no
    )
)

现在我想要的是什么:

1)删除所有no元素。

2)之后,我想在每个字符串中只有第二个元素。

总之,我希望我的最终输出如下:

[Decold Total, Insulin];

但我不知道该怎么做.. ??

请任何人都可以解决我的问题。帮助将是可观的。

1 个答案:

答案 0 :(得分:1)

您需要在NSPredicate上使用Myarray并过滤它。

让你的Myarray像这样。 NSMutableArray * Myarray = [NSMutableArray new];

for (int i=0; i<_menuItems.count; i++) {
     [Myarray addObjectsFromArray:[[_menuItems objectAtIndex:i] objectForKey:@"medicine"]];
}

1)删除所有no元素。

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"NOT (SELF = %@)",@"no"];
NSArray *filterArray = [Myarray filteredArrayUsingPredicate:predicate];

2)每个字符串只需要第二个元素

NSMutableArray *medicineArray = [[NSMutableArray alloc] init];
for (NSString* medicine in filterArray) {
     NSArray *arr = [medicine componentsSeparatedByString:@","];
     if (arr.count >= 2)  {
          [medicineArray addObject:[arr objectAtIndex:1]];
     }
}