我有一个Web服务,它返回制表符分隔的数据(参见下面的示例)。
我需要将其解析为数组或类似数据,以便我可以创建它的导航视图。
我已设法执行Web请求并可解析XML文件,但我对Objective-C的了解很少。
433 Eat
502 Not Fussed
442 British
443 Chinese
444 Dim Sum
445 Fish
446 French
447 Gastropubs
449 Indian
451 Italian
452 Japanese
453 Middle Eastern
454 Pan-Asian
455 Pizza
456 Spanish
457 Tapas
458 Thai
459 Vegetarian
434 Drink
501 Not Fussed
460 Bars
461 Pubs
答案 0 :(得分:7)
我不确定我是否完全理解你的格式(它对我来说有点奇怪),但最简单的方法是with - (NSArray *)componentsSeparatedByString:(NSString *)separator
这是NSString类中的一个方法...例如:
NSArray *components = [myString componentsSeperatedByString:@"\t"];
这将返回NSArray
NSStrings
,每个制表符分隔字段一个。如果新行分隔符很重要,您可以使用- (NSArray *)componentsSeparatedByCharactersInSet:(NSCharacterSet *)separator
(也在NSString
上)使用多种分隔符进行拆分。
答案 1 :(得分:4)
我感觉不仅仅是一个平面列表。如果你想要一个多维结构,你可以这样做:
NSArray *lines = [data componentsSeparatedByString:@"\n"];
for (NSString *line in lines) {
NSArray *fields = [line componentsSeparatedByString:@"\t"];
// Do something here with each two-element array, such as add to an NSDictionary or to an NSArray (to make a multidimensional array.)
}
答案 2 :(得分:2)
你与NSScanner走在正确的轨道上。您至少需要两个扫描仪:一个用于扫描整个输入字符串中的行,另一个用于扫描每行扫描线。将整个输入扫描程序设置为仅跳过空格(而不是换行符),然后:
有关具体的方法名称,请参阅the NSScanner class reference和the NSCharacterSet class reference。