如何扫描这个字符串?

时间:2011-03-26 22:58:41

标签: objective-c

假设我有一个这样的字符串: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作为单独的字符串。为了获得时间,Caleb的答案非常有效。但我仍然没有想出如何得到上午/下午。有什么想法吗?

是的,我们走了,想通了。 :)

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 个答案:

答案 0 :(得分:1)

从你的问题不清楚,但我猜测字符串中的“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];