在NSURL中抓取域名中的所有内容?

时间:2012-02-23 21:08:31

标签: cocoa nsstring nsurl

这看起来很简单,但我找不到任何能正是我正在寻找的东西。

我需要的是获取NSURL(或其NSString表示)并获取超出方案和域的所有内容的能力。所以在http://www.google.com/search?&q=cocoa的情况下,我需要/搜索?& q = cocoa。

我可以使用[NSURL relativePath]和[NSURL查询]将字符串拼凑在一起,但[NSURL查询]会遗漏问号,因为我正在使用的URL不能保证有问号我不能把它们添加回自己。

那么有一个很好的,方便的方法来抓住我错过的方案和领域的所有内容,或者我将不得不把它全部分开并将它粘合在一起?

3 个答案:

答案 0 :(得分:3)

这不正是[NSURL relativeString]的作用吗?

关于此问题的一个minor注意事项:

enter image description here

答案 1 :(得分:1)

您可以使用正则表达式等来完成此操作。但在这种情况下,自定义解决方案可能是最好的。

如果您的网址始终为“http:// ...”,则需要在前7个字符后找到第一个“/”,然后从那里获取字符串。或者你可以找到第3个“/"...

您可以使用rangeX NSString方法之一计算“/”的索引,并在获得后使用substringFromIndex方法。

答案 2 :(得分:1)

如果URL没有问号来表示其参数字符串,那么所有参数都应作为路径的一部分返回。要让NSURL‑query返回内容,必须成为网址中的问号。

路径之后的其他内容是‑fragment‑parameterString。 URL基本上像这样分解:

scheme://user:password@host.domain.org:portnumber/path/file.htm;param1;param2?something=other&andmore=more#fragments

如果‑query返回nil,那么就没有问号。