Как сканировать эту строку? - PullRequest
0 голосов
/ 27 марта 2011

Предположим, у меня есть такая строка: Conditions for Paris, FR at 10:29 pm CET.

Я хочу получить время: 10:29.

Я знаю, как сканировать строку в другую строку до определенной точки, например:

NSString *something;
NSScanner *scanner = [NSScanner scannerWithString:@"Sometest_something"];
[scanner scanUpToString:@"_" intoString:&something];

И результат будет Sometest.

Однако, похоже, это не помогает мне получить строку времени, которую я ищу.Есть идеи?Я уверен, что это довольно просто.

Обновление: Мне также нужно иметь am / pm в виде отдельной строки.Чтобы получить время, ответ Калеба работает отлично.Но я до сих пор не понял, как получить утра / вечера.Есть идеи?

Да, поехали, разобрались .:)

NSScanner *scanner = [NSScanner scannerWithString:timestring];
NSString *ampm;
[scanner scanUpToCharactersFromSet:[NSCharacterSet decimalDigitCharacterSet] intoString:nil];
[scanner scanUpToCharactersFromSet:[NSCharacterSet letterCharacterSet] intoString:nil];
[scanner scanUpToCharactersFromSet:[NSCharacterSet uppercaseLetterCharacterSet] intoString:&ampm];

1 Ответ

1 голос
/ 27 марта 2011

Это не ясно из вашего вопроса, но я предполагаю, что часть строки «Paris, FR» может измениться, но остальная часть строки (очевидно, не включая время) постоянна?Если это так, вы можете:

[scanner scanUpToString:@" at " intoString:nil];
[scanner scanString:@" at " intoString:nil];
[scanner scanUpToCharactersFromSet:[NSCharacterSet letterCharacterSet] intoString:&something];

Редактировать: Если подумать, если вы знаете, что до этого времени нет цифр, вы можете просто использовать -scanUpToCharactersFromSet: для всего этого:

[scanner scanUpToCharactersFromSet:[NSCharacterSet decimalDigitCharacterSet] intoString:nil];
[scanner scanUpToCharactersFromSet:[NSCharacterSet letterCharacterSet] intoString:&something];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...