我有一个以逗号分隔的字符串数组,例如:
Steve Jobs,12,CA
Fake Name,21,CA
Test Name,22,CA
Bill Gates,44,WA
Bill Nye,21,OR
我在NSScanner对象中有这些值,这样我就可以遍历这些值并使用objectAtIndex获取每个逗号分隔值。
所以,我想做的是,根据一个值(在本例中为State)将数组项分组为新数组。所以,从那些,我需要循环,检查它们所处的状态,并将它们推入一个新的数组,每个状态一个数组。
CA Array:
Steve Jobs,12,CA
Fake Name,21,CA
Test Name,22,CA
WA Array:
Bill Gates,44,WA
OR Array:
Bill Nye,21,OR
所以最后,我会有3个新数组,每个状态一个。此外,如果第一个数组中使用了其他状态,那么也应该创建新的数组。
任何帮助将不胜感激!
答案 0 :(得分:2)
您可以使用NSMutableDictionary
NSMutableArray
s - 如果遇到的状态尚未出现在字典中,请添加新数组。
NSMutableArray* arr = [states objectForKey:state];
if (arr == nil) {
arr = [NSMutableArray array];
[states setObject:arr forKey:state];
}
然后你可以在数组中插入值,最好是作为对象,尽管Dave DeLong提到。
答案 1 :(得分:1)
您不应将此数据维护为CSV格式。如果您需要以编程方式操作此数据(例如您正在尝试执行的操作),那就要求一个受伤的世界。
您可以使用NSArray * portions = [line componentsSeparatedByString:@","];
天真地将此数据分解为数组。然后创建一个自定义对象来存储每个部分(例如,参见this post),然后您可以毫不费力地操作这些对象。
答案 2 :(得分:0)
天真:(假设字符串数组称为字符串)
NSMutableDictionary *states = [NSMutableDictionary dictionary];
for (NSString *string in strings) {
NSString *state = [[string componentsSeparatedByString:@", "] lastObject];
NSMutableArray *values = [states objectForKey:state];
if (values == nil) {
values = [NSMutableArray array];
[states setObject:value forKey:state];
}
[values addObject:string];
}
关于这一点的事情 - 首先,我不在我的电脑上,所以很有可能出现错别字和/或我错过的事情。其次,您可能希望调整由字符串行分隔的组件以更好地处理空白。