如何获取目标-c中NSURL的部分内容

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (28)

我有一个NSString值为

http://digg.com/news/business/24hr

我怎样才能获得第三级之前的所有东西?

http://digg.com/news/
提问于
用户回答回答于

这不完全是第三级。一个URL像这样分割:

  • 协议或方案(在这里http
  • ://分隔符
  • 用户名和密码(这里没有,但可以username:password@hostname
  • 主机名(在这里digg.com
  • 端口(:80例如在域名之后)
  • 路径(在这里/news/business/24hr
  • 参数字符串(任何跟随分号的东西)
  • 查询字符串(这将是如果你有GET参数?foo=bar&baz=frob
  • 片段(如果你在链接中有一个锚点,就是这样#foobar)。

一个“功能完备”的URL看起来像这样:

http://foobar:nicate@example.com:8080/some/path/file.html;params-here?foo=bar#baz

NSURL有广泛的访问者。你可以在该NSURL类的文档中查看它们,访问URL的各个部分。快速参考:

  • -[NSURL scheme] = http
  • -[NSURL resourceSpecifier] =(从//到网址末尾的所有内容)
  • -[NSURL user] = foobar
  • -[NSURL password] = nicate
  • -[NSURL host] = example.com
  • -[NSURL port] = 8080
  • -[NSURL path] = /some/path/file.html
  • -[NSURL pathComponents] = @ [“/”,“some”,“path”,“file.html”](注意最初的/是它的一部分)
  • -[NSURL lastPathComponent] = file.html
  • -[NSURL pathExtension] = html
  • -[NSURL parameterString] = params-here
  • -[NSURL query] = foo = bar
  • -[NSURL fragment] =基地

然而,你会想要的是这样的:

NSURL* url = [NSURL URLWithString:@"http://digg.com/news/business/24hr"];
NSString* reducedUrl = [NSString stringWithFormat:
    @"%@://%@/%@",
    url.scheme,
    url.host,
    url.pathComponents[1]];

用户回答回答于

这提供了一种交互式的方式来看到这一点。我希望你能喜欢做同样的事情,这是学习NSURL成为iOS中一个重要主题的有趣方式。

扫码关注云+社区