我没有在Xcode中解决此问题的能力:
我有这段文字:
“402
加西亚
15/01/15 10:26
休斯佩德天文台”
我想提取我确定为格林尼治标准时间+0的日期,然后添加手机格林尼治标准时间(例如GMT +1),并将旧日期替换为NSString中的新日期。
我刚刚在其他地方解决了GMT问题,所以我只需要提取日期字符串并将其替换为字符串,这样我的最终结果将是:
“402
加西亚
15年1月8日11:26
休斯佩德天文台”
任何帮助将不胜感激,并在此先感谢。
最佳答案
这正是NSDataDetector的用途。
我在NSString的类别中创建了一个方法:
@interface NSString (HASAdditions)
- (NSArray *)detectedDates;
@end
@implementation NSString (HASAdditions)
- (NSArray *)detectedDates {
NSError *error = nil;
NSDataDetector *dateDetector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingTypeDate error:&error];
if (!dateDetector) return nil;
NSArray *matches = [dateDetector matchesInString:self options:kNilOptions range:NSMakeRange(0, self.length)];
NSMutableArray *dates = [[NSMutableArray alloc] init];
for (NSTextCheckingResult *match in matches) {
if (match.resultType == NSTextCheckingTypeDate) {
[dates addObject:match.date];
}
}
return dates.count ? [dates copy] : nil;
}
您可以这样称呼它:
NSArray *dates = [@"402 Garcia 01/08/15 10:26 Observaciones del huésped" detectedDates];
您可以在NSHipster上阅读有关NSDataDetector的更多信息。
关于ios - 从复杂的NSString中提取日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27861182/