2009-06-02 20 views
5

किसी की मदद कर सकते हैं मुझे इस स्ट्रिंग से पूर्णांक टाइमस्टैम्प मान प्राप्त करने के "/ तारीख (1242597600000) /" उद्देश्य सी मेंउद्देश्य सी में तार पार्स करने के लिए कैसे

मैं प्राप्त करना चाहते हैं 1242597600000.

Thx

उत्तर

14

एक सरल विधि:

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

Thx, कि मुझे मदद की एक बहुत – Mladen

+0

संपादित 'NSRangeMake' को' NSMakeRange' बदलने के लिए। – jrdioko

12

एक से अधिक तरीके यह करने के लिए नहीं है। एनएसएस कैनर का उपयोग करके एक सुझाव यहां दिया गया है;

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

आईएमओ एनएसएसकेनर ऐसा करने का _the_ तरीका है। मैं एक एनएसएससीनर जुंकी हूं =) – monowerker

+0

यह संख्या निकालने नहीं है। यह '/ दिनांक (' उपसर्ग 'के कारण विफल रहता है। –

3
NSCharacterSet* nonDigits = [[NSCharacterSet decimalDigitCharacterSet] invertedSet]; 
NSString* digitString = [timestampString stringByTrimmingCharactersInSet:nonDigits]; 
return [digitString longValue]; 
संबंधित मुद्दे