使用swift从URL中删除参数

问题描述:

我有一个类似于myapp://jhb/test/deeplink/url?id=4567的URL。 我想删除? char之后的所有东西。最后,URL应该看起来像myapp://jhb/test/deeplink/url。怎么样。我可以做到吗?将网址转换为字符串?正则表达式?使用swift从URL中删除参数

+0

只是看看这一个https://*.com/questions/39184984/delete-all-characters-after-a-certain-character-from-a-string-in-swift –

你可以这样做

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

这将打破串?并返回数组。 values的第一个对象给你你的结果字符串。

你可以使用

print("\(url.host!)") //Domain name 
print("\(url.path)") // Path 
print("\(url.query)") // query string 

使用URLComponents不同的URL部分分开,处理它们,然后提取新的URL从以下网址分隔每个URL部分:

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

myapp://jhb/test/deeplink/url

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

当使用URL,倒不如把它当作URLComponent

该网址解析成和结构的网址从他们 组成部分的结构。

因此,参照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可选字符串,这意味着它可能是零(如代码片段中所述,这应该会导致您所需的输出)。