从字符串中提取图像的URL

时间:2012-11-16 21:06:53

标签: ios url nsstring range

我正在尝试从一串文本中提取图像的URL。它可能来自不同的网站,可能是任何形式的图像(jpg,png,gif等)。什么是扫描字符串,找到任何匹配的图片扩展名,并从中获取图形的好方法?

字符串可能是这样的:

Hello, I hope you like my picture located at http://www.website.com/picture1.png.  However, if you don't, I know you'll like this one http://www.website2.org/picture2.jpg.Please refer all comments to http://www.website5.com/

我希望能够扫描字符串以查找图像文件的唯一URL,并创建一个新的字符串,无论第一个图像URL是什么。所以在这个字符串中,我可以创建一个只有http://www.website.com/picture1.png

的新字符串

3 个答案:

答案 0 :(得分:5)

我来自The Link Objective-C - Finding a URL within a string

不需要使用RegexKitLite,因为iOS 4 Apple提供NSDataDetectorNSRegularExpression的子类)。

你可以像这样使用它(source是你的字符串):

NSDataDetector* detector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingTypeLink error:nil];
NSArray* matches = [detector matchesInString:source options:0 range:NSMakeRange(0, [source length])];

答案 1 :(得分:1)

Use below code after later finish with @Anup Kumar

   for (NSTextCheckingResult *match in matches) {
        NSRange matchRange = [match range];
        if ([match resultType] == NSTextCheckingTypeLink) {
            NSURL *url = [match URL];
        } else if ([match resultType] == NSTextCheckingTypePhoneNumber) {
            NSString *phoneNumber = [match phoneNumber];
        }
   }

答案 2 :(得分:0)

嗯,要获得扩展名,你可以使用NSString方法pathExtension,这将产生一个只有扩展名的字符串,所以你会知道它是jpg,gif,png等。

NSString* path = @"http://location.com/pictures/image.jpg";
NSString* extension = [path pathExtension];

对于您的图形,您可以使用UIImage imageWithData方法,并将其传递给NSData dataWithContentsOfUrl方法的输出,使用这些方法将允许您创建一个UIImage,然后您可以在UIImageView中显示它。

UIImage* image = [UIImage imageWithData:[NSData dataWithContentsOfURL:path]];

希望这很有帮助。