0

我有一个下载和解析 JSON 提要的 iOS 应用程序。JSON 提要中的一个字符串提供图像的 URL。问题是它以这种格式存储 URL:

<img src="http://25.media.tumblr.com/c9f50eb1fa2e16ad24e311910afabeac/tumblr_mh9v59RLTt1r5ewjho1_500.jpg"/><br/><br/><p>Vibrant Blue.</p>

为了在 UIImageView 中显示此图像,我显然只需要 URL 而不需要 HTML 位。因此,如果我将其存储在 NSString 中,我该如何删除其余部分并将 URL 保留在字符串中?

谢谢,丹

4

3 回答 3

3

看看@这个例子。您可以轻松地将其应用于您的解决方案:

NSString *str = @"<img src=\"http://25.media.tumblr.com/c9f50eb1fa2e16ad24e311910afabeac/tumblr_mh9v59RLTt1r5ewjho1_500.jpg\"/><br/><br/><p>Vibrant Blue.</p>";
NSArray*arr = [str componentsSeparatedByString:@"\""];

在这种情况下,您arr objectAtIndex:1是:

http://25.media.tumblr.com/c9f50eb1fa2e16ad24e311910afabeac/tumblr_mh9v59RLTt1r5ewjho1_500.jpg
于 2013-10-16T14:41:19.193 回答
0

使用的替代解决方案NSRegularExpression

NSString *str = @"<img src=\"http://25.media.tumblr.com/c9f50eb1fa2e16ad24e311910afabeac/tumblr_mh9v59RLTt1r5ewjho1_500.jpg\"/><br/><br/><p>Vibrant Blue.</p>";

NSRegularExpression *regexp = [NSRegularExpression regularExpressionWithPattern:@"\"(.*)\""
                                                                     options:NSRegularExpressionCaseInsensitive
                                                                       error:NULL];
NSTextCheckingResult *result = [regexp firstMatchInString:str
                                                  options:NSMatchingReportProgress
                                                    range:NSMakeRange(0, str.length)];
NSString *imageURL = [str substringWithRange:[result rangeAtIndex:1]]; // 1 for first capture group
于 2013-10-16T14:51:32.027 回答
0

看看NSRegularExpression类。也许你可以这样做。

这是一个示例代码,从这里复制。

NSError *error = nil;
NSRegularExpression *tagsRegex = [NSRegularExpression 
         regularExpressionWithPattern:@"(<b>|<u>|<i>|<br/?>)" 
                              options:NSRegularExpressionCaseInsensitive
                                error:&error];
if (!tagsRegex) {
    NSLog(@"Tags regex creation error: %@", [error localizedDescription]);
}

if ([tagsRegex numberOfMatchesInString:marketingMessage options:0 
                    range:NSMakeRange(0, [marketingMessage length])])
{
    ...
}
于 2013-10-16T14:37:55.330 回答