2

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

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

4

2 回答 2

7

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

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

  1. 使用 NSURL 的 -host 方法来正确剥离方案和路径/查询。
  2. 使用 NSString 的 -componentsSeparatedByString: 方法获取域名的“组件”数组。
  3. 忽略最后一个组件。
  4. 如果只剩下一个组件(或者它可能足以获取倒数第二个组件),那么您就完成了。
  5. 如果第一个组件包含“www”,如www3、“ftp”、“mail”或类似的东西,如果你愿意,你也可以忽略它。其余的可能会感兴趣,具体取决于您的需要。
  6. 针对一万个 URL 测试你的算法,以了解这项任务的徒劳;)
于 2010-02-25T13:15:23.877 回答
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);
于 2013-09-23T01:31:07.967 回答