0

我有一个大小未定的字符串,其中包含一个 8 位数字。例子:

This is 123456 a string
This is a new string 123456
123456 This is another string

如何提取此类数字的整数值?

4

4 回答 4

2

NSString有一个实例方法-integerValue,它返回从字符串内容中提取的整数值。所以[@"123456" integerValue]会回来123456

于 2013-02-05T01:06:35.383 回答
1

我认为你想要的是一个 NSScanner。让扫描仪扫描到第一次出现的 decimalDigitCharacterSet,然后使用scanInteger:它来获取它找到的 NSInteger 值。

于 2013-02-05T01:29:02.283 回答
1

您可以使用正则表达式从字符串中提取任何给定格式的数字。如果您只想从任何给定字符串中获取一个整数(在本例中为第一个整数):

NSString* str = @"This is 123456 a string";

NSRegularExpression* regex = [NSRegularExpression regularExpressionWithPattern:@".*?(\\d+).*?" options:NULL error:nil];

NSArray* results = [regex matchesInString:str options:NULL range:NSMakeRange(0, [str length])];

NSString* str2 = [str substringWithRange:[(NSTextCheckingResult*)[results objectAtIndex:0] rangeAtIndex:1]];

NSLog(@"%@",str2);

NSInteger intResult = [str2 integerValue];
于 2013-02-05T01:39:11.527 回答
1

从长度不确定的字符串中提取多个给定数字。

#import <Foundation/Foundation.h>

NSNumber* numberFromStringWithDigits(NSString* string, NSUInteger digits)
{
      NSScanner *scanner = [NSScanner scannerWithString:string];  
      NSCharacterSet *allowed = [NSCharacterSet decimalDigitCharacterSet];  
      while ([scanner isAtEnd] == NO) {  
          NSString *buffer;  
          if ([scanner scanCharactersFromSet:allowed intoString:&buffer]) {  
              if ([buffer length]==digits){
                  return [NSNumber numberWithInt:[buffer integerValue]];
              }
          } else {        
              [scanner setScanLocation:([scanner scanLocation] + 1)];  
          } 
      }
      return nil;
}

int main(int argc, char *argv[]) {
    @autoreleasepool {
        NSString *url = @"http://garb23age.com/x555xx/xx12345678xxxxxx";
        NSDate *startTime = [NSDate date];  

        NSNumber *n = numberFromStringWithDigits(url,8);

        NSTimeInterval elapsedTime = [startTime timeIntervalSinceNow];  
        NSLog(@"%@ in %f seconds",n,-elapsedTime); // 12345678 in 0.000188 seconds
    }
}

@Bri An C:可能您想要的是parameterString提取NSURL. 也许您应该发布 URL 以寻求替代解决方案。

于 2013-02-05T01:53:22.507 回答