2012-01-13 141 views
0
NSString * str=[zoneDict objectForKey:@"name"]; 
NSLog(@"==========string zone::==========%@",str); 
// str="(GMT +3:00) Baghdad, Riyadh, Moscow, St. Petersbur"; 

如何從上述字符串中獲取3:00值?如何在iPhone應用程序中從NSString獲取整數值?

+3

嗯,我猜你並不是真的想要一個整數;你需要一個符號(+),一個整數小時(3)和一個整數分鐘(00)。它是否正確?在解析字符串之前,'zoneDict'的類型是什麼?時區數據結構通常以一種更可用的形式提供偏移量,而不僅僅是一個字符串,但是'zoneDict'中只有一個字符串嗎? – CRD 2012-01-13 09:53:17

回答

3
NSString *str = @"(GMT -3:00) Baghdad, Riyadh, Moscow, St. Petersbur"; 
NSRange endRange = [str rangeOfString:@")"]; 
NSString *timeString = [str substringWithRange:NSMakeRange(5, endRange.location-5)]; 
NSRange separatorRange = [timeString rangeOfString:@":"]; 
NSInteger hourInt = [[timeString substringWithRange:NSMakeRange(0, separatorRange.location)] intValue]; 
NSLog(@"Hour:%d",hourInt); 
+0

非常感謝你..... – 2012-01-13 12:40:22

+0

唯一的事情是,NSInteger實際上不是int^_ ^我認爲它實際上很長。 – 2014-02-19 06:29:02

1

而不是試圖提取時間從字符串偏移,有沒有你可以存儲在你的zoneDict實際時間段數據什麼辦法?例如,您可以存儲NSTimeZone實例。

如果您擁有的只是字符串,則可以使用NSRegularExpression對象,而使用正則表達式提取相關信息。

如果你可以進一步解釋你想要做什麼,那麼可能有另一種方法來實現你想要的。

1

我喜歡用-[NSString componentsSeparatedByString]:

NSString *str = @"(GMT -3:00) Baghdad, Riyadh, Moscow, St. Petersbur"; 
NSArray *myWords = [myString componentsSeparatedByString:@")"]; 
NSString *temp1 = [myWords objectAtIndex:0]; 
if ([temp1 rangeOfString:@"-"].location == NSNotFound) { 
    NSArray *temp2 = [temp1 componentsSeparatedByString:@"+"]; 
    NSString *temp3 = [temp2 objectAtIndex:1]; 
    NSLog(@"Your String - %@", temp3); 
} 
else { 
    NSArray *temp2 = [temp1 componentsSeparatedByString:@"-"]; 
    NSString *temp3 = [temp2 objectAtIndex:1]; 
    NSLog(@"Your String - %@", temp3); 
} 

輸出:

Your String - 3:00 
+0

錯誤。如果該值在+ GMT值中更改,則代碼不起作用。 – 2012-01-13 12:51:54

+0

是啊,你寫的是你必須檢查 - 或+在字符串中。我現在正在解決 – Hiren 2012-01-13 12:57:02

0

使用正則表達式,在我看來是更好的選擇(如果你被迫提取 '3' 只)。正則表達式字符串將包含類似「\ d?」的內容但不要在此引用我,你必須查找確切的字符串。也許有人在這裏可以提供確切的字符串。

相關問題