我有一个 NSString ,其值为
http://digg.com/news/business/24hr
如何获得第三级之前的所有内容?
http://digg.com/news/
请注意,这不完全是第三层。 URL 的分割方式如下:
- 协议或方案(这里,
http
)
- the
://
分隔符
- 用户名和密码(这里没有,但也可以是
username:password@hostname
)
- 主机名(这里,
digg.com
)
- 端口(即
:80
例如在域名之后)
- 路径(这里,
/news/business/24hr
)
- 参数字符串(分号后面的任何内容)
- 查询字符串(如果您有 GET 参数,例如
?foo=bar&baz=frob
)
- 片段(如果您在链接中有一个锚点,例如
#foobar
).
一个“功能齐全”的 URL 看起来像这样:
http://foobar:nica[email protected]:8080/some/path/file.html;params-here?foo=bar#baz
NSURL
拥有广泛的访问器。您可以在文档中查看它们NSURL班级、部门访问 URL 的部分内容。快速参考:
-
-[NSURL scheme]
= http
-
-[NSURL resourceSpecifier]
=(从 // 到 URL 末尾的所有内容)
-
-[NSURL user]
= 富巴
-
-[NSURL password]
= 尼卡特
-
-[NSURL host]
= example.com
-
-[NSURL port]
= 8080
-
-[NSURL path]
= /some/path/file.html
-
-[NSURL pathComponents]
= @["/", "some", "path", "file.html"] (注意首字母 / 是其中的一部分)
-
-[NSURL lastPathComponent]
= 文件.html
-
-[NSURL pathExtension]
= html
-
-[NSURL parameterString]
= 参数-此处
-
-[NSURL query]
= 富=酒吧
-
-[NSURL fragment]
= baz
不过,你想要的是这样的:
NSURL* url = [NSURL URLWithString:@"http://digg.com/news/business/24hr"];
NSString* reducedUrl = [NSString stringWithFormat:
@"%@://%@/%@",
url.scheme,
url.host,
url.pathComponents[1]];
对于您的示例 URL,您似乎想要的是协议、主机和第一个路径组件。 (由返回的数组中索引 0 处的元素-[NSString pathComponents]
只是“/”,因此您需要索引为 1 的元素。其他斜杠将被丢弃。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)