NSString * str=[zoneDict objectForKey:@"name"];
NSLog(@"==========string zone::==========%@",str);
// str="(GMT +3:00) Baghdad, Riyadh, Moscow, St. Petersbur";
如何从上面的字符串中获取3:00值?
答案 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?”的内容但不要引用我的话,你必须查找确切的字符串。也许这里有人可以提供确切的字符串。