NSString *string = @"Product: Acme Potato Peeler; Cost: 0.98 73\nProduct: Chef Pierre Pasta Fork; Cost: 0.75 19\nProduct: Chef Pierre Colander; Cost: 1.27 2\n"; NSCharacterSet *semicolonSet; NSScanner *theScanner; NSString *PRODUCT = @"Product:"; NSString *COST = @"Cost:"; NSString *productName; float productCost; NSInteger productSold; semicolonSet = [NSCharacterSet characterSetWithCharactersInString:@";"]; theScanner = [NSScanner scannerWithString:string]; while ([theScanner isAtEnd] == NO) { if ([theScanner scanString:PRODUCT intoString:NULL] && [theScanner scanUpToCharactersFromSet:semicolonSet intoString:&productName] && [theScanner scanString:@";" intoString:NULL] && [theScanner scanString:COST intoString:NULL] && [theScanner scanFloat:&productCost] && [theScanner scanInteger:&productSold]) { NSLog(@"Sales of %@: $%1.2f", productName, productCost * productSold); } }
Scans the string until a given string is encountered, accumulating characters into a string that’s returned by reference.
(从当前位置开始,根据指定的字符串扫描,直到找到指定的字符串停止(不不会指定的字符串),返回从当前位置开始到指定字符串之间的字符串,并赋值给(stringValue)这个参数)
- (BOOL)scanUpToString:(NSString *)stopString intoString:(NSString **)stringValue
Scans a given string, returning an equivalent string object by reference if a match is found.
(跳过指定的字符串) stringValue中的值和string 中的一样
- (BOOL)scanString:(NSString *)string intoString:(NSString **)stringValue