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

Ios 使用NSScanner或NSRange for url查找NSSet对象,ios,string,webview,nsset,nsscanner,Ios,String,Webview,Nsset,Nsscanner,基本上,我试图找到包含在我的webview的url中的NSSet对象 如何使用NSScanner或NSRange执行此操作 下面是我的工作内容 //External file links NSURL* externalURL = [request URL]; NSString *externalFileExtension = [[request URL] pathExtension]; //External file extensions NSLog(

基本上,我试图找到包含在我的webview的url中的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等。甚至还有一个直接下载链接。例如,Media Fire链接启动下载时甚至不去站点,几乎就像它只是下载文本一样。直接下载甚至不会启动我的下载程序


使用公认的答案,什么是区分这些的最干净的方法?

如果不使用NSScanner或NSRange,可能是类似的:

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

以下是您想要的:

//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
    }
}

但是问题是:NScord*ExtalFieleExt= = [请求URL ]路径扩展;当“扩展”可以在链接的中间被挖掘时,仍然在搜索扩展。这个答案的代码是简单的调用<代码> [支持文件扩展名包含对象:外部文件扩展名]OP已经在做了。啊。我不知道containsObject会对每个项目调用isEqual。我相信它只是比较了指针,实际上,它比较了哈希方法返回的值。我现在很安静……你的目标是看看你的扩展是否在URL的任何部分吗?这正是我试图做的。为r大多数情况下,只有几个问题。我有一些指向不同网站的链接,如Media Fire、Copy、Box等。甚至还有一个直接下载链接。例如,Media Fire链接启动下载时甚至不去网站,几乎就像它只是下载文本一样。直接下载甚至不会启动我的下载程序。这似乎没有什么意义任何与原始问题有关的问题。如果此答案解决了原始问题,您应该接受和/或更新答案。如果您还有其他问题,请发布一个包含相关详细信息的新问题。而不是更新此已完成并已回答的问题,请发布一个新问题。此处为新问题: