I have a string that contains words as well as a number. How can I extract that number from the string?
NSString *str = @"This is my string. #1234";
Here's an NSScanner based solution:
// Input NSString *originalString = @"This is my string. #1234"; // Intermediate NSString *numberString; NSScanner *scanner = [NSScanner scannerWithString:originalString]; NSCharacterSet *numbers = [NSCharacterSet characterSetWithCharactersInString:@"0123456789"]; // Throw away characters before the first number. [scanner scanUpToCharactersFromSet:numbers intoString:NULL]; // Collect numbers. [scanner scanCharactersFromSet:numbers intoString:&numberString]; // Result. int number = [numberString integerValue];
(Some of the many) assumptions made here:
Alternatively you could scan direct to the
[scanner scanUpToCharactersFromSet:numbers intoString:NULL]; int number; [scanner scanInt:&number];
# marks the start of the number in the string, you could find it by means of:
[scanner scanUpToString:@"#" intoString:NULL]; [scanner setScanLocation:[scanner scanLocation] + 1]; // Now scan for int as before.