Как я могу получить целочисленное значение из NSString в приложении iPhone? - PullRequest
0 голосов
/ 13 января 2012
NSString * str=[zoneDict objectForKey:@"name"];
NSLog(@"==========string zone::==========%@",str);
// str="(GMT +3:00) Baghdad, Riyadh, Moscow, St. Petersbur";

Как я могу получить значение 3:00 из приведенной выше строки?

Ответы [ 4 ]

3 голосов
/ 13 января 2012
 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 голос
/ 13 января 2012

Мне нравится использовать -[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
1 голос
/ 13 января 2012

Вместо того, чтобы пытаться извлечь смещение времени из строки, есть ли способ сохранить фактические данные часового пояса в вашем zoneDict?Например, вы можете вместо этого хранить NSTimeZone экземпляров.

Если у вас есть только строка, вы можете использовать объект NSRegularExpression и извлекать соответствующую информацию, используя регулярное выражение.

Если бы вы могли более подробно объяснить, что вы пытаетесь сделать, тогда может быть альтернативный способ добиться того, чего вы хотите.

0 голосов
/ 13 января 2012

Использование регулярных выражений - лучший вариант на мой взгляд (если вы вынуждены извлечь только «3»)Строка регулярного выражения будет содержать что-то вроде "\ d?"но не цитируйте меня об этом, вам придется искать точную строку.Возможно, кто-то здесь мог бы предоставить точную строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...