通过文本,解析链接

时间:2013-01-31 14:25:52

标签: ios objective-c cocoa-touch

我的文字包含链接(这些是图片链接) 我需要解析文本以便构建它,并且当链接被访问时,将获取图像。

所以例如:

  

“我曾经有一只狐狸 http://mysite.com/images/fox.jpg 。   我还拥有一只小狗 http://mysite.com/images/dog.jpg

所以它看起来像这样:

  

我曾经有一只狐狸

----------------------------------
|                                |
|Fox Image From                  |
|http://mysite.com/images/fox.jpg|
|                                |
|                                |
----------------------------------
  

我还拥有一只小狗和一只公鸡

----------------------------------
|                                |
|dog Image From                  |
|http://mysite.com/images/dog.jpg|
|                                |
|                                |
----------------------------------
--------------------------------------
|                                    |
|rooster Image From                  |
|http://mysite.com/images/rooster.jpg|
|                                    |
|                                    |
--------------------------------------

我可以用什么来实现这个目标?

我已经设置了视图,但现在它只显示我的文本。 如何将图像添加到该视图? 我该如何解析它们? 什么是最好的方法?

3 个答案:

答案 0 :(得分:1)

您可以使用UIWebView来显示文字,无论在何处找到有效的图片链接,都可以将其打包在<img>代码中。

要解析这些链接,您可以使用RegEx。您可能需要根据您的确切规格自行调整正则表达式,但粗略的jist将是http(?:s)?://.+\.(?:jpg|jpeg|png|gif|bmp)。这会选择一个以http或https开头的网页链接,以.jpg,.png等结尾...(通过方式未经测试)

在代码中,您可以将其作为

NSString *regExpString = @"http(?:s)?://.+\\.(?:jpg|jpeg|png|gif|bmp)";
NSString *storyStr = @"...";    

NSRegularExpression *storyRegex = [[NSRegularExpression alloc] initWithPattern:regExpString
                                                                      options:NSRegularExpressionCaseInsensitive
                                                                        error:nil];

NSString* webViewStr = [storyRegex stringByReplacingMatchesInString:storyStr options:0 range:NSMakeRange(0, storyStr.length) withTemplate:@"<br\><img src=\"$0\"></img><br\>"];

然后,在webViewStr

中使用UIWebView
UIWebView* webView = ...;
[webView loadHTMLString:webViewStr baseURL:nil];

答案 1 :(得分:0)

每当检测到图像链接时(最有可能使用img src=),您可以通过将图像链接包装在stringByReplacingOccurencesOfString: withString:标记中来将其转换为HTML。

所以您转换所有链接:

http://mysite.com/images/rooster.jpg

<img src="http://mysite.com/images/rooster.jpg">

获得HTML后,您可以将其加载到UIWebView

希望这有帮助。

答案 2 :(得分:0)

我们可以编写HTML代码并在textview中显示

NSString *regExpString = @"http(?:s)?://.+\\.(?:jpg|jpeg|png|gif|bmp)";
NSString *yourStr = @"Test Article with Image and LinksTest Article with Image and Links http://image.gif";
NSRegularExpression *storyRegex = [[NSRegularExpression alloc] initWithPattern:regExpString options:NSRegularExpressionCaseInsensitive error:nil];

NSString* tempStr = [storyRegex stringByReplacingMatchesInString:yourStr options:0 range:NSMakeRange(0, storyStr.length) withTemplate:@"<br\><img src=\"$0\"></img><br\>"];
NSString *htmlStr = [NSString stringWithFormat:@"<html> %@ </html>",tempStr];
[self.txtView setValue:htmlStr forKey:@"contentToHTMLString"];