如何在iPhone应用程序中从NSString获取整数值?

时间:2012-01-13 09:33:37

标签: iphone objective-c ios ipad ios4

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

如何从上面的字符串中获取3:00值?

4 个答案:

答案 0 :(得分: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);

答案 1 :(得分:1)

您是否可以在zoneDict中存储实际时区数据,而不是尝试从字符串中提取时间偏移量?例如,您可以存储NSTimeZone个实例。

如果您拥有的只是字符串,则可以使用NSRegularExpression对象并使用正则表达式提取相关信息。

如果你能进一步解释你想要做什么,那么可能有另一种方法可以达到你想要的效果。

答案 2 :(得分: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

答案 3 :(得分:0)

在我的视图中使用正则表达式是更好的选择(如果您被迫仅提取'3')。正则表达式字符串将包含类似“\ d?”的内容但不要引用我的话,你必须查找确切的字符串。也许这里有人可以提供确切的字符串。