我有一个NSString,其值为
http://digg.com/news/business/24hr
如何在第3级之前获得所有内容?
http://digg.com/news/
答案 0 :(得分:419)
请注意,这不完全是第三级。 URL的分割方式如下:
http
)://
分隔符username:password@hostname
)digg.com
):80
)/news/business/24hr
)?foo=bar&baz=frob
这样的GET参数)#foobar
一样)。“功能齐全”的网址如下所示:
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]
= baz 你想要的是这样的东西:
NSURL* url = [NSURL URLWithString:@"http://digg.com/news/business/24hr"];
NSString* reducedUrl = [NSString stringWithFormat:
@"%@://%@/%@",
url.scheme,
url.host,
url.pathComponents[1]];
对于您的示例网址,您似乎需要的是协议,主机和第一个路径组件。 (-[NSString pathComponents]
返回的数组中索引0处的元素只是“/”,因此您需要索引1处的元素。其他斜杠将被丢弃。)
答案 1 :(得分:6)