2010-12-15 3 views
2

У меня есть строка времени, которая выглядит так: 5:34 pm. Я хочу захватить 5, поместить его в переменную и захватить 34 и поместить его в переменную. Это возможно?Захват чисел после толстой кишки?

Заранее благодарен!

+0

У вас есть точные ответы на ваш вопрос, но если вы пытаетесь разобрать время, см. [NSDateFormatter dateFromString:]. – Ken

+0

@Ken Я попытался использовать его, но для моих нужд просто синтаксический анализ строки был всем, что мне нужно. Спасибо хоть! –

ответ

4
NSArray *splitString = [timeString componentsSeparatedByString:@":"]; 
if ([splitString count] > 1 { 
    NSString *hours = [splitString objectAtIndex:0]; 
    NSString *minutes = [splitString objectAtIndex:1]; 
} 
else { 
    //improperly formatted string 
} 
+0

Красивая! Только то, что мне было нужно. Спасибо, ответит, как только он станет доступен. –

+0

Нет проблем! Я помню, как искал этот метод назад. :-) – Jumhyn

6

Остерегайтесь описанной выше техники NSString. Если в вашей строке отсутствует двоеточие, вы получите сообщение об ошибке objectAtIndex: 1. (Я бы прокомментировал это, но мне не хватало репутации.)

Это должно быть немного более надежным.

int hours, minutes; 
if (2 == sscanf([timeString UTF8String], "%d:%d", &hours, &minutes)) 
{ 
    // congratulations, you did it 
} 
else 
{ 
    // the string was malformed 
} 
+0

Не уверен, что мне следует использовать функцию стиля C или метод стиля Objective-C? –

+0

Довольно уверен, что он всегда будет иметь двоеточие. –

+0

, даже в другом методе легко проверить наличие неверных euqations: просто проверьте, что splitString.count> 1. Кроме того, если вам нужно больше контроля, я рекомендую вам посмотреть на «NSScanner». – mohsenr

Смежные вопросы