我有一个值为 的 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/