- // Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- - (void)viewDidLoad
- {
- [super viewDidLoad];
- [self test];
- // Reference output...
- dumpCharacterSet( @"alphanumericCharacterSet" );
- dumpCharacterSet( @"controlCharacterSet" );
- dumpCharacterSet( @"decimalDigitCharacterSet" );
- dumpCharacterSet( @"decomposableCharacterSet" );
- dumpCharacterSet( @"illegalCharacterSet" );
- dumpCharacterSet( @"letterCharacterSet" );
- dumpCharacterSet( @"lowercaseLetterCharacterSet" );
- dumpCharacterSet( @"nonBaseCharacterSet" );
- dumpCharacterSet( @"punctuationCharacterSet" );
- dumpCharacterSet( @"uppercaseLetterCharacterSet" );
- dumpCharacterSet( @"whitespaceAndNewlineCharacterSet" );
- dumpCharacterSet( @"whitespaceCharacterSet" );
- }
- - (void)test
- {
- // Set up for reading testString
- NSString *testString = @"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:testString];
- NSString *location;
- float theRevenue;
- float thePercent;
- int theRank;
- // Set up data delimiter using semicolon//分号
- NSCharacterSet *CharacterSet;
- //Returns a character set containing the characters in a given string.
- CharacterSet = [NSCharacterSet characterSetWithCharactersInString:@";,"];
- // Double check scanner string
- NSLog (@"Scanner string\n");
- //Returns the string with which the receiver was created or initialized.
- 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
- //Scans for a float value, returning a found value by reference.
- 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])
- ;
- }
- }
- void dumpCharacterSet( NSString *name )
- {
- unichar idx;
- NSCharacterSet *cset = [NSCharacterSet performSelector: NSSelectorFromString(name)];
- printf("Character set (0-127): %s\n7-Bit: ", [name UTF8String]);
- for( idx = 0; idx < 256; idx++ )
- {
- if ( 128 == idx ) {
- printf( "\n8-Bit: " );
- }
- //Returns a Boolean value that indicates whether a given character is in the receiver.
- if ([cset characterIsMember: idx])
- {
- //判断字符c是否为可打印字符(含空格)
- if ( isprint(idx) ) {
- printf( "%c ", idx);
- }
- else {
- printf( "%02x ", idx);
- }
- }
- }
- printf("\n\n");
- }
Hope To Help You !
技术交流群:141624834 进群请说你看的那篇博客,我们一起探讨成长