使用swift从URL中删除参数

时间:2017-10-09 12:14:07

标签: swift string url

我的网址看起来像myapp://jhb/test/deeplink/url?id=4567。 我想删除?字符后面的所有内容。最后,网址应该看起来像myapp://jhb/test/deeplink/url。怎么样。我能做到吗?将网址转换为字符串?正则表达式?

4 个答案:

答案 0 :(得分:1)

使用URLComponents分隔不同的网址部分,操纵它们,然后提取新的网址:

var components = URLComponents(string: "myapp://jhb/test/deeplink/url?id=4567")!
components.query = nil
print(components.url!)
  

myapp://jhb/test/deeplink/url

答案 1 :(得分:0)

你可以这样做

let values = utl?.components(separatedBy: "?")[0]

它将使用?中断字符串并返回数组。 values的第一个对象为您提供结果字符串。

答案 2 :(得分:0)

您可以使用

将每个网址组件与URl分开
print("\(url.host!)") //Domain name
print("\(url.path)") // Path
print("\(url.query)") // query string

答案 3 :(得分:0)

  我可以实现吗?将网址转换为字符串?正则表达式?

使用网址时,最好将其视为URLComponent

  

一种结构,用于解析URL并从中构建URL   组成部分。

因此,参考URLComponent你要问的是从url中删除query子组件:

if var componenets = URLComponents(string: "myapp://jhb/test/deeplink/url?id=4567") {
    componenets.query = nil

    print(componenets) // myapp://jhb/test/deeplink/url
}

请注意,query是一个可选字符串,这意味着它可能是nil(如代码段中所述,这应该会导致您想要的输出)。