iphone:我可以检测到网址类型吗?

时间:2010-09-08 06:00:14

标签: iphone url uiwebview

我正在为iphone创建一个Twitter客户端。

基本上,我有三种我想要处理的网址类型:

  • 标准网址(例如http://www.msn.com
  • YouTube网址
  • 包含指向流的链接的网址。

当用户点击链接时...而不是启动网络视图并让webview决定是否加载quicktime播放器& youtube播放器,我希望能够在应用程序中处理它。

即。我怎么能编码像:

检查链接 如果link = link.youtube那么    加载youtube播放器 如果link = link.mp3流然后    加载quicktime播放器 其他    在webview中加载

1 个答案:

答案 0 :(得分:1)

检查youtube很简单,你可以像

一样查看域名
[NSString rangeOfSubstring:@"youtube.com"].location != NSNotFound

mp3流不是那么难,你通过获取最后一个“。”来检查最后一个扩展。然后再检查一组视频流格式,如:

NSArray *possibleExtensions = [url componentsSeparatedByString:@"."];
NSString *extension = [possibleExtensions objectAtIndex:([possibleExtensions count] - 1)];  
NSSet *extensionSet = [NSSet setWithObjects: @"mp4", @"mov", @"m4v", @"mpv", @"3gp", nil];    
BOOL isStream = [extensionSet containsObject:extension];

如果要检查普通链接,可以使用正则表达式:

  NSString *regrexUrl = @"\\b((?:[\\w-]+://?|www[.])[^\\s()<>]+(?:\\([\\w\\d]+\\)|(?:[^\\p{Punct}\\s]|/)))";
  // Based on http://daringfireball.net/2009/11/liberal_regex_for_matching_urls

  NSString *urlString = [YOUR_STRING_HERE stringByMatching:NCPARSER_REGEX_URL capture:1];
  if (urlString) {
    NSLog(@"It is an url");
  }