我的 URL 看起来像
myapp://jhb/test/deeplink/url?id=4567
。
我想删除 ?
字符之后的所有内容。最后,URL 应类似于 myapp://jhb/test/deeplink/url
。如何。我能做到吗?将 url 转换为字符串?正则表达式?
使用
URLComponents
分隔不同的 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 扩展
private extension URL {
var removingQueries: URL {
if var components = URLComponents(string: absoluteString) {
components.query = nil
return components.url ?? self
} else {
return self
}
}
}
我能实现这个目标吗?将 url 转换为字符串?正则表达式?
URLComponent
:
将 URL 解析为 URL 并从中构造 URL 的结构 组成部分。
因此,引用 URLComponent 您要求的是从 url 中删除 query 子组件:
if var components = URLComponents(string: "myapp://jhb/test/deeplink/url?id=4567") {
components.query = nil
print(components) // myapp://jhb/test/deeplink/url
}
请注意,
query
是一个可选字符串,这意味着它可能为零(如代码片段中所述,这应该会导致您想要的输出)。
你可以这样做
let values = utl?.components(separatedBy: "?")[0]
它将用
?
断开字符串并返回数组。
values
的第一个对象为您提供结果字符串。
您可以使用
将每个 URL 组件与 URl 分开print("\(url.host!)") //Domain name
print("\(url.path)") // Path
print("\(url.query)") // query string