【问题标题】:Grabbing everything past the domain in an NSURL?在 NSURL 中获取域之外的所有内容?
【发布时间】:2012-03-14 08:19:46
【问题描述】:

这看起来很简单,但我找不到任何能完全符合我要求的东西。

我需要的是获取 NSURL(或其 NSString 表示)并获取方案和域之外的所有内容的能力。所以对于http://www.google.com/search?&q=cocoa,我需要/search?&q=cocoa。

我可以通过使用 [NSURL relativePath] 和 [NSURL query] 拼凑一个字符串来接近,但 [NSURL query] 忽略了问号,并且由于我正在使用的 URL 不能保证有问号我不能只是将它们添加回自己。

那么有没有一种很好、方便的方法来获取我错过的方案和域之外的所有内容,还是我必须将它们全部拆开并重新粘合在一起?

【问题讨论】:

    标签: cocoa nsstring nsurl


    【解决方案1】:

    这不正是[NSURL relativeString] 所做的吗?

    一个minor对此的注意事项:

    【讨论】:

      【解决方案2】:

      您可以使用正则表达式等来做到这一点。但在这种情况下,自定义解决方案可能是最好的。

      如果您的 URL 始终是“http://...”,那么您需要在前 7 个字符之后找到第一个“/”,然后从那里获取字符串。或者你可以只找到第三个“/”...

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

      【讨论】:

        【解决方案3】:

        如果 URL 没有问号来表示其参数字符串,则所有参数都应作为路径的一部分返回。要让NSURL‑query 返回某些内容,必须在 URL 中添加一个问号。

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

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

        如果‑query 返回nil,则没有问号。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-04-25
          • 1970-01-01
          相关资源
          最近更新 更多