Objective c 如何在Objective C中解析字符串

Objective c 如何在Objective C中解析字符串,objective-c,parsing,Objective C,Parsing,有人能帮我从目标C中的字符串“/Date(1242597600000)/”中提取int timestamp值吗 我想要1242597600000 Thx一种简单的方法: NSString *timestampString = @"\/Date(1242597600000)\/"; NSArray *components = [timestampString componentsSeparatedByString:@"("]; NSString *afterOpenBracket = [compo

有人能帮我从目标C中的字符串“/Date(1242597600000)/”中提取int timestamp值吗

我想要1242597600000

Thx一种简单的方法:

NSString *timestampString = @"\/Date(1242597600000)\/";
NSArray *components = [timestampString componentsSeparatedByString:@"("];
NSString *afterOpenBracket = [components objectAtIndex:1];
components = [afterOpenBracket componentsSeparatedByString:@")"];
NSString *numberString = [components objectAtIndex:0];
long timeStamp = [numberString longValue];
或者,如果您知道字符串的长度和格式始终相同,则可以使用:

NSString *numberString = [timestampString substringWithRange:NSMakeRange(7,13)];
还有另一种方法:

NSRange openBracket = [timestampString rangeOfString:@"("];
NSRange closeBracket = [timestampString rangeOfString:@")"];
NSRange numberRange = NSMakeRange(openBracket.location + 1, closeBracket.location - openBracket.location - 1);
NSString *numberString = [timestampString substringWithRange:numberRange];

做这件事的方法不止一种。这里有一个使用NSScanner的建议

NSString *dateString = @"\/Date(1242597600000)\/";
NSScanner *dateScanner = [NSScanner scannerWithString:dateString];
NSInteger timestamp;

if (!([dateScanner scanInteger:&timestamp])) {
    // scanInteger returns NO if the extraction is unsuccessful
    NSLog(@"Unable to extract string");
}

// If no error, then timestamp now contains the extracted numbers.

这是一种方法。我是一个NSScanner瘾君子=)这不能提取数字。由于
\/日期(
前缀。编辑后将
NSRangeMake
更改为
NSMakeRange
,因此失败。
NSCharacterSet* nonDigits = [[NSCharacterSet decimalDigitCharacterSet] invertedSet];
NSString* digitString = [timestampString stringByTrimmingCharactersInSet:nonDigits];
return [digitString longValue];