You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Objective-C中从NSString格式HTML提取span标签内的时间文本?

在Objective-C中提取HTML字符串里的span文本

嘿,在Objective-C里提取这段HTML中span标签内的时间文本,有几种实用的方法,我给你详细说说:

方法一:正则表达式(快速直接)

如果你的HTML结构比较固定,正则表达式是最快捷的方式。我们可以精准匹配带有class="releasedDate"的span标签,然后提取其内部的文本:

NSString *timeString = @"<h5 style=\"direction:ltr\"><span data-version-created-date=\"20180326T120530.000+0000\" class=\"releasedDate\">26-Mar-2018 12:05:30</span></h5>";

// 构建正则表达式,匹配目标span标签及其内部文本
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"<span[^>]+class=\"releasedDate\"[^>]*>(.*?)</span>" 
                                                                       options:NSRegularExpressionCaseInsensitive 
                                                                         error:nil];
NSTextCheckingResult *matchResult = [regex firstMatchInString:timeString 
                                                      options:0 
                                                        range:NSMakeRange(0, timeString.length)];

if (matchResult) {
    // 提取第1个捕获组的内容(即span标签内的文本)
    NSString *extractedTime = [timeString substringWithRange:[matchResult rangeAtIndex:1]];
    NSLog(@"提取到的时间:%@", extractedTime); // 输出:26-Mar-2018 12:05:30
} else {
    NSLog(@"未找到匹配的时间内容");
}

正则说明

  • <span[^>]+class=\"releasedDate\"[^>]*>:匹配带有releasedDate类名的span起始标签,[^>]+和[^>]*用来跳过标签内的其他属性
  • (.*?):非贪婪匹配,捕获span标签内的所有文本内容
  • </span>:匹配span的结束标签

方法二:利用NSAttributedString解析HTML(更安全)

如果HTML结构可能有变化,或者你不想写正则,可以用系统的NSAttributedString来解析HTML,直接提取纯文本:

NSString *timeString = @"<h5 style=\"direction:ltr\"><span data-version-created-date=\"20180326T120530.000+0000\" class=\"releasedDate\">26-Mar-2018 12:05:30</span></h5>";

NSData *htmlData = [timeString dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *parseOptions = @{
    NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType,
    NSCharacterEncodingDocumentAttribute: @(NSUTF8StringEncoding)
};

NSError *parseError = nil;
NSAttributedString *attributedHtml = [[NSAttributedString alloc] initWithData:htmlData 
                                                                       options:parseOptions 
                                                            documentAttributes:nil 
                                                                         error:&parseError];

if (!parseError) {
    NSString *extractedText = attributedHtml.string;
    NSLog(@"提取到的文本:%@", extractedText); // 输出:26-Mar-2018 12:05:30
} else {
    NSLog(@"HTML解析失败:%@", parseError.localizedDescription);
}

方法优势

这个方法由系统处理HTML的解析逻辑,不需要关心标签的具体结构,只要目标文本是HTML里的唯一可见文本,就能直接提取到。如果HTML里还有其他文本,你可能需要进一步处理,但对于你的需求来说完全够用。

内容的提问来源于stack exchange,提问作者iPhoneDeveloper

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:45:11