iphone - 如何查找 NSString 中某种格式的出现

标签 iphone objective-c nsstring find-occurrences

我正在阅读提要,需要查找字符串格式的出现情况,例如,在“Feed for 03/02/2012”中。现在该日期将始终采用以下格式:%@/%@/%@。我需要找到是否出现这种格式,从而提取日期。日期和月份可以是任意的,所以我没有要搜索的具体日期。我在文档中搜索,找不到它。对我来说唯一可能的选择似乎是采用一个月的所有 12 个组合(例如“/12/”),并找到其中任何一个的出现情况。

有没有更好的方法?

最佳答案

您可以使用正则表达式:

NSString *feed = @"Feed for 03/02/2012";

NSError *error;

NSRegularExpression *regex = [NSRegularExpression         
    regularExpressionWithPattern:@"([0-9]{1,2})/([0-9]{1,2})/([0-2][0-9]{3})"
    options:NSRegularExpressionCaseInsensitive
    error:&error];

[regex enumerateMatchesInString:feed options:0 range:NSMakeRange(0, [feed length])    usingBlock:^(NSTextCheckingResult *match, NSMatchingFlags flags, BOOL *stop){
    NSString *month = [feed substringWithRange:[match rangeAtIndex:1]];
    NSString *day = [feed substringWithRange:[match rangeAtIndex:2]];
    NSString *year = [feed substringWithRange:[match rangeAtIndex:3]];
    //...
}];

关于iphone - 如何查找 NSString 中某种格式的出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10665205/

相关文章:

objective-c - 核心数据 : NSFetchRequest sorting by count of to-many relationship

html - 有没有办法在 HTML 字符串中反转 %@ 文本

iphone - 如何在不插入空格的情况下替换 NSString 中的字符?

iphone - ld : 871 duplicate symbols for architecture armv7, clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)

iphone - cellForRowAtIndexPath : not called

iphone - 异步纹理加载 iPhone OpenGL ES 2

objective-c - swift 错误 : class method "someMethod() is unavailable, use object construction Class()"

iphone - 关闭uiimagepickercontroller后如何使状态栏重新出现

ios - 以编程方式关闭 iphone 低电量警报

ios - Objective-C 删除 ANSI 颜色控制代码