首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从复杂的NSString中提取日期

从复杂的NSString中提取日期
EN

Stack Overflow用户
提问于 2015-01-09 13:01:38
回答 2查看 174关注 0票数 1

我没有能力在Xcode中解决这个问题:

我有一条短信:

"402 Garcia 01/08/15 10:26个胡须观测站“

我想提取的日期,我肯定是格林尼治标准时间+0,然后添加电话格林尼治时间,例如格林尼治时间+1,并将旧日期替换为新的日期在NSString内。

我刚刚在另一个地方解决了GMT的问题,所以我只需要提取并替换字符串中的日期字符串,这样我的最终结果将是:

"402 Garcia 01/08/15 11:26个胡须观测站“

如有任何帮助,请提前表示感谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-09 13:38:47

这正是NSDataDetector存在的目的。

我在NSString上创建了一个类别中的方法:

代码语言:javascript
复制
@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;
}

你可以这样说:

代码语言:javascript
复制
NSArray *dates = [@"402 Garcia 01/08/15 10:26 Observaciones del huésped" detectedDates];

您可以在NSDataDetector网上阅读更多关于NSHipster的内容。

票数 6
EN

Stack Overflow用户

发布于 2015-01-09 13:16:01

本作品始终是同一文本结构。

代码语言:javascript
复制
NSString *text = @"402 Garcia 01/08/15 10:26 Observaciones del huésped";

// This the formatter will be use.
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"dd/MM/yy HH:mm"];
[formatter setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]];

// First we extract the part of the text we need.
NSArray *array = [text componentsSeparatedByString:@" "];
NSString *dateString = [NSString stringWithFormat:@"%@ %@",[array objectAtIndex:2],[array objectAtIndex:3]];
// Here the search text
NSLog(@"%@",dateString);

// Now we use the formatter and the extracted text.
NSDate *date = [formatter dateFromString:dateString];

NSLog(@"The date is: %@",[date description]);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27861182

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档