2012-01-13 98 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?”的内容但不要在此引用我,你必须查找确切的字符串。也许有人在这里可以提供确切的字符串。

相关问题