#import <Cocoa/Cocoa.h>
#import <Foundation/Foundation.h>
#import <Foundation/NSObject.h>
#import <Foundation/NSString.h>
#import <Foundation/NSFileManager.h>
#import <Foundation/NSAutoreleasePool.h>
#import <Foundation/NSDictionary.h>
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
// Set up for reading testData
NSString *testData = @"Los Angeles;8.25;0.580561574;1,Tokyo;1.9;0.643872234;1;Honolulu,0;0;0;Toronto;7.9;5.3322;3;";
// Parse CSV with NSScanner
NSScanner *myScanner = [NSScanner scannerWithString:testData];
NSString *location;
float theRevenue;
float thePercent;
int theRank;
// Set up data delimiter using semicolon
NSCharacterSet *CharacterSet;
CharacterSet = [NSCharacterSet characterSetWithCharactersInString:@";,"];
// Double check scanner string
NSLog (@"Scanner string\n");
NSLog (@"%@",[myScanner string]);
// scanner loop start
while ([myScanner isAtEnd] == NO) {
if ( [myScanner scanUpToCharactersFromSet:CharacterSet intoString:&location] ) {
NSLog (@"%@",location);
}
// Skipping the ; and ,delimiter
if([myScanner scanString:@";" intoString:NULL] || [myScanner scanString:@"," intoString:NULL])
;
// Read Revenue data up to ; delimiter and skipping
if([myScanner scanFloat:&theRevenue])
NSLog(@"%lf",theRevenue);
if([myScanner scanString:@";" intoString:NULL] || [myScanner scanString:@"," intoString:NULL])
;
// Read Percentage data up to ; delimiter and skipping
if([myScanner scanFloat:&thePercent])
NSLog(@"%lf",thePercent);
if([myScanner scanString:@";" intoString:NULL] || [myScanner scanString:@"," intoString:NULL])
;
// Read Ranking data up to ; delimiter and skipping
if([myScanner scanInt:&theRank])
NSLog(@"%i",theRank);
if([myScanner scanString:@";" intoString:NULL] || [myScanner scanString:@"," intoString:NULL])
;
}
[pool drain];
return 0;
}
使用NSScanner解析分段字符串数据
最新推荐文章于 2021-06-02 22:39:20 发布