Search code examples
objective-cstringcocoaparsingnsscanner

How to use NSScanner?


I've just read Apple documentation for NSScanner. I'm trying to get the integer of this string:

@"user logged (3 attempts)"

I can't find any example, how to scan within parentheses. Any ideas?

Here's the code:

NSString *logString = @"user logged (3 attempts)";
NSScanner *aScanner = [NSScanner scannerWithString:logString];

[aScanner scanInteger:anInteger];

NSLog(@"Attempts: %i", anInteger);

Solution

  • `Here is what I do to get certain values out of a string

    First I have this method defined

    - (NSString *)getDataBetweenFromString:(NSString *)data leftString:(NSString *)leftData rightString:(NSString *)rightData leftOffset:(NSInteger)leftPos; 
    {         
        NSInteger left, right;         
        NSString *foundData;
        NSScanner *scanner=[NSScanner scannerWithString:data];                  
        [scanner scanUpToString:leftData intoString: nil];         
        left = [scanner scanLocation];         
        [scanner setScanLocation:left + leftPos];         
        [scanner scanUpToString:rightData intoString: nil];         
        right = [scanner scanLocation] + 1;         
        left += leftPos;         
        foundData = [data substringWithRange: NSMakeRange(left, (right - left) - 1)];         return foundData; 
    }
    

    Then call it.

    foundData = [self getDataBetweenFromString:data leftString:@"user logged (" rightString:@"attempts)" leftOffset:13];
    

    leftOffset is the number of characters for the left string

    Could be an easier cleaner way but that was my solution.