objective-c - 在objective-c中获取NSURL的一部分

标签 objective-c nsstring nsurl

我有一个值为 的 NSString

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

如何才能在第 3 级之前获得所有内容?

http://digg.com/news/

最佳答案

请注意,这不完全是第三级。像这样拆分 URL:

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

“功能齐全”的 URL 如下所示:

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

NSURL 具有广泛的访问器。您可以在 NSURL 的文档中查看它们。类,访问 URL 的各个部分部分。快速引用:

  • -[NSURL 方案] = http
  • -[NSURL resourceSpecifier] =(从//到 URL 末尾的所有内容)
  • -[NSURL 用户] = foobar
  • -[NSURL 密码] = nicate
  • -[NSURL 主机] = example.com
  • -[NSURL 端口] = 8080
  • -[NSURL 路径] =/some/path/file.html
  • -[NSURL pathComponents] = @["/", "some", "path", "file.html"](注意开头的/是其中的一部分)
  • -[NSURL lastPathComponent] = file.html
  • -[NSURL pathExtension] = html
  • -[NSURL parameterString] = params-here
  • -[NSURL 查询] = foo=bar
  • -[NSURL 片段] = baz

不过,你想要的是这样的:

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

对于您的示例 URL,您似乎想要的是协议(protocol)、主机和第一个路径组件。 (-[NSString pathComponents] 返回的数组中索引 0 处的元素只是“/”,因此您需要索引 1 处的元素。其他斜杠被丢弃。)

关于objective-c - 在objective-c中获取NSURL的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3692947/

相关文章:

iphone - UIViewController 的两种方式关系

ios - 如何将 iOS appStoreReceiptURL 转换为 Base 64 编码字符串?

cocoa - NSString 支持非标准/非英文字符吗?

ios - 将字符串转换为 NSURL 返回 nil

iphone - UITableView 部分问题

objective-c - 如何串联多个NSData?

objective-c - 填充 NSString 不起作用

ios - 无法从 URL 获取图像? (NSURLErrorDomain 错误 -1100)

iOS Objective C HTTPS 请求失败

objective-c - 语法 : assign method's property value to sql command