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?
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?
NSString
-integerValue
文字列の内容から抽出された整数値を返すインスタンス メソッドがあります。だから[@"123456" integerValue]
戻ってき123456
ます。
正規表現を使用して、文字列から任意の形式の数値を引き出すことができます。任意の文字列から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];
あなたが欲しいのはNSScannerだと思います。スキャナーに の最初の出現までスキャンさせ、 decimalDigitCharacterSet
それを使用scanInteger:
して見つかった NSInteger 値を取得します。
長さが不確定な文字列から、指定された桁数を抽出します。
#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 を投稿して別の解決策を求める必要があるかもしれません。