使用NSScanner或NSRange for url查找NSSet对象

时间:2014-11-29 14:55:47

标签: ios string webview nsset nsscanner

基本上我正在尝试为我的webview找到网址中包含的NSSet对象。

我如何使用NSScanner或NSRange执行此操作?

以下是我正在使用的内容。

    //External file links
    NSURL* externalURL = [request URL];
    NSString *externalFileExtension = [[request URL] pathExtension];


    //External file extensions
    NSLog(@"fileExtension is: %@", externalFileExtension);
    NSSet *supportedFileExtensions = [NSSet setWithObjects:@"mpeg", @"mpg", @"m1s", @"mpa", @"mp2", @"m2a", @"mp2v", @"mv2", @"m2s", @"avi", @"mov", @"qt", @"asf", @"asx", @"wmv", @"wma", @"wmx", @"rm", @"ra", @"ram", @"rmvb", @"mp4", @"3gp", @"3gpp", @"ogm", @"mkv", @"flv", @"mv4", @"srt", @"swf", @"vob", @"aif", @"iff", @"m3u", @"m4a", @"mid", @"mp3", @"mpa", @"wav", @"aac", @"7z", @"cbr", @"deb", @"gz", @"pkg", @"rar", @"rpm", @"sitx", @"tar.gz", @"zip", @"zipx", @"ipsw", @"bin", @"cue", @"dmg", @"iso", @"mdf", @"toast", @"vcd", @"torrent", @"nes", @"rom", @"doc", @"docs", @"msg", @"odt", @"rtf", @"txt", @"wpd", @"wps", nil];

    if ([supportedFileExtensions containsObject:externalFileExtension]) {
         //my actions
}

由于链接的类型,某些网站并不完全使用文件扩展名,有些网站使用链接中的扩展名类型,即“zip = blahblah”或“blahblahzipblah”

我需要搜索点击的链接以找到supportedFileExtensions部分。

先谢谢你。

更新: 感谢rmaddy让我朝着正确的方向前进。对于我原来的问题,它确实解决了它。但我在其他一些网站上使用时遇到了问题。

我有一个webview,其中我有一些指向不同网站的链接,如Media Fire,Copy,Box等。甚至是直接下载链接。例如,媒体消防链接开始下载甚至没有访问该网站,几乎就像它只是下载文本。直接下载甚至不会解雇我的下载器。

使用接受的答案,区分这些的最简洁方法是什么?

2 个答案:

答案 0 :(得分:1)

以下内容应该是您想要的:

//External file links
NSURL* externalURL = [request URL];
NSString *urlString = [externalURL absoluteString];

NSSet *supportedFileExtensions = [NSSet setWithObjects:@"mpeg", @"mpg", @"m1s", @"mpa", @"mp2", @"m2a", @"mp2v", @"mv2", @"m2s", @"avi", @"mov", @"qt", @"asf", @"asx", @"wmv", @"wma", @"wmx", @"rm", @"ra", @"ram", @"rmvb", @"mp4", @"3gp", @"3gpp", @"ogm", @"mkv", @"flv", @"mv4", @"srt", @"swf", @"vob", @"aif", @"iff", @"m3u", @"m4a", @"mid", @"mp3", @"mpa", @"wav", @"aac", @"7z", @"cbr", @"deb", @"gz", @"pkg", @"rar", @"rpm", @"sitx", @"tar.gz", @"zip", @"zipx", @"ipsw", @"bin", @"cue", @"dmg", @"iso", @"mdf", @"toast", @"vcd", @"torrent", @"nes", @"rom", @"doc", @"docs", @"msg", @"odt", @"rtf", @"txt", @"wpd", @"wps", nil];

for (NSString *extension in supportedFileExtensions) {
    if ([urlString rangeOfString:extension].location != NSNotFound) {
        // Found extension somewhere in the URL - process it as needed
        break; // stop looking for more
    }
}

答案 1 :(得分:0)

也许这样的没有使用NSScanner或NSRange:

BOOL result = NO;
for (NSString *extension in supportedFileExtensions) {
    if ([externalFileExtension isEqualToString:extension]) {
        result = YES;
        break;
    }
}