从iOS中的下载字符串中提取URL

时间:2013-10-16 14:30:30

标签: html ios json url nsstring

我有一个iOS应用程序,可以下载和解析JSON提要。 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保留在字符串中?

谢谢, 丹

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

查看NSRegularExpression课程。也许你可以用这个来做。

以下是从here复制的示例代码。

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])])
{
    ...
}

答案 2 :(得分: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