NSScanner初识(一)

工程中有关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);  

        }  

    }

你可能感兴趣的:(NSScanner)