在objective-c中获取NSURL的一部分
我有一个NSString的值
http://digg.com/news/business/24hr
我怎样才能得到第三级之前的一切?
http://digg.com/news/
这不完全是第三级,介意你。 一个URL像这样分裂:
- 协议或scheme(这里,
http
) -
://
分隔符 - 用户名和密码(这里没有,但可以是
username:password@hostname
) - 主机名(这里是
digg.com
) - 该端口(例如
:80
后的域名) - path(这里是
/news/business/24hr
) - 参数string(任何后面的分号)
- 查询string(这将是如果你有GET参数像
?foo=bar&baz=frob
) - 该片段(这将是如果你有一个链接锚点,如
#foobar
)。
一个“全function”的URL将如下所示:
http://foobar:nicate@example.com:8080/some/path/file.html;params-here?foo=bar#baz
NSURL
有广泛的访问者。 您可以在NSURL
类的文档中检查它们, 访问URL的部分 。 快速参考:
-
-[NSURL scheme]
= http -
-[NSURL resourceSpecifier]
=(从//到URL结尾的所有内容) -
-[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]];
对于您的示例URL,您似乎需要的是协议,主机和第一个path组件。 (由-[NSString pathComponents]
返回的数组中索引为0的元素只是“/”,所以您需要索引为1的元素。其他斜线将被丢弃。
游乐场提供了一个互动的方式来看待这个行动。 我希望你能喜欢做同样的,一个有趣的方式来学习NSURL在iOS的一个重要的话题。
- 如何使用drawInRect:withAttributes:而不是drawAtPoint:forWidth:withFont:fontSize:lineBreakMode:baselineAdjustment:in iOS 7
- sizeWithFont方法已被弃用。 boundingRectWithSize返回一个意外的值
- 如何在NSString中使用printf
- NSString包含string崩溃
- 如何将unichar值转换为Objective-C中的NSString?
- NSString是整数?
- 检测NSString是否包含…?
- replaceNSString – iPhone的出现
- NSString:在plist中换行符