2009-06-02 5 views
5

analysieren Kann mir jemand helfen int Timestamp-Wert aus dieser Zeichenfolge "/ Date (1242597600000) /" in Objective CWie Strings in Objective C

Ich mag 1242597600000.

Thx

bekommen würde zu extrahieren

Antwort

14

Eine einfache Methode:

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]; 

Alternativ, wenn Sie die Zeichenfolge wissen wird immer die gleiche Länge und das Format sein, könnten Sie verwenden:

NSString *numberString = [timestampString substringWithRange:NSMakeRange(7,13)]; 

Und eine andere Methode:

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

Thx, das mir viel – Mladen

+0

Edited geholfen zu ändern 'NSRangeMake' zu' NSMakeRange'. – jrdioko

12

Es gibt mehr als einen Weg, es zu tun. Hier ist ein Vorschlag mit einem 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. 
+1

IMO NSScanner ist _the_ way, es zu tun. Ich bin ein NSScanner junkie =) – monowerker

+0

Dies extrahiert die Nummer nicht. Es scheitert wegen dem '\/Date (' Präfix. –

3
NSCharacterSet* nonDigits = [[NSCharacterSet decimalDigitCharacterSet] invertedSet]; 
NSString* digitString = [timestampString stringByTrimmingCharactersInSet:nonDigits]; 
return [digitString longValue];