0

I have a string of undetermined size which contains a 8 digit number. Example:

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

How can I extract the integer value of such number?

4

4 に答える 4

2

NSString-integerValue文字列の内容から抽出された整数値を返すインスタンス メソッドがあります。だから[@"123456" integerValue]戻ってき123456ます。

于 2013-02-05T01:06:35.383 に答える
1

正規表現を使用して、文字列から任意の形式の数値を引き出すことができます。任意の文字列から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

あなたが欲しいのはNSScannerだと思います。スキャナーに の最初の出現までスキャンさせ、 decimalDigitCharacterSetそれを使用scanInteger:して見つかった NSInteger 値を取得します。

于 2013-02-05T01:29:02.283 に答える
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 に答える