工程中有关NSScanner的报错,对这个类也不是很了解,闲暇时学习学习。
// NSScanner是一个类,用于在字符串中扫描指定的字符,尤其是把它们翻译/转换为数字和别的字符串。可以在创建NSScaner时指定它的string属性,然后scanner会按照你的要求从头到尾地扫描这个字符串的每个字符。
//创建一个scanner类(方式1)
NSScanner *scanner=[NSScanner scannerWithString:@"123 hello "];
//创建一个scanner类(方式2)
NSScanner *scanner=[NSScanner localizedScannerWithString:@"hello"];
//扫描NSInteger类型
NSInteger anInteger;
[scanner scanInteger:&anInteger];
//扫描到@" "时,前面所有的文字
NSString *container;
[scanner scanUpToString:@" " intoString:&container];
NSLog(@"%ld===>%@",anInteger,container);
//从当前扫描的位置继续扫描
NSString *product;
product = [[scanner string] substringFromIndex:[scanner scanLocation]];
NSLog(@"%@",product);
NSString *string = @"Food: apple; Cost: 4.0 20\n\
Food: bananer; Cost: 4.0 20\n\
Food: meat; Cost: 10.0 20\n";
NSCharacterSet *semicolonSet;
NSScanner *theScanner;
NSString *FOOD = @"Food:";
NSString *COST = @"Cost:";
NSString *productName;
float productCost;
NSInteger productSold;
semicolonSet = [NSCharacterSet characterSetWithCharactersInString:@";"];
theScanner = [NSScanner scannerWithString:string];
while ([theScanner isAtEnd] == NO)
{
if ([theScanner scanString:FOOD 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);
}
}