从URL字符串中解析域名

时间:2010-02-25 12:39:04

标签: objective-c nsurl

如何解析Objective-C中的域名?

例如,如果我的字符串值为“http://www.google.com”,我想解析字符串“google”

2 个答案:

答案 0 :(得分:7)

我认为这个问题有点无效。主机由其FQDN(完全限定的域名)决定,在您的示例中,该域名是 www.google.com 。它与 mail.google.com www.google.info google.com 不同。单挑“google”并非易事,从URL的角度来看也没有多大意义。

如果您想要或多或少地智能地解析URL,我认为您可以执行以下操作:

  1. 使用NSURL的-host方法正确删除方案和路径/查询。
  2. 使用NSString的-componentsSeparatedByString:方法获取域名“组件”的数组。
  3. 忽略最后一个组件。
  4. 如果只剩下一个组件(或者它可能足以取得倒数第二个组件),那么你已经完成了。
  5. 如果第一个组件包含“www”,如 www3 ,“ftp”,“mail”或类似的东西,那么可以忽略它。根据您的需要,其余部分可能会引起关注。
  6. 根据一万个网址测试您的算法,以获得此任务的无用感;)

答案 1 :(得分:4)

在iOS 7中,您可以使用NSURLComponents类:

NSURLComponents *components = [[NSURLComponents alloc] initWithString:@"http://stackoverflow.com/questions/2333972/objective-c-parse-domain-name-from-url-string"];
NSAssert([components.host isEqualToString:@"stackoverflow.com"], nil);