首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >获取URL参数的值

获取URL参数的值
EN

Stack Overflow用户
提问于 2017-01-02 05:19:32
回答 5查看 82.3K关注 0票数 116

我正在尝试使用Swift从URL中获取参数。假设我有以下URL:

代码语言:javascript
运行
复制
http://mysite3994.com?test1=blah&test2=blahblah

如何获得test1和test2的值?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2017-01-02 05:24:24

您可以使用下面的代码获取param

代码语言:javascript
运行
复制
func getQueryStringParameter(url: String, param: String) -> String? {
  guard let url = URLComponents(string: url) else { return nil }
  return url.queryItems?.first(where: { $0.name == param })?.value
}

调用类似于let test1 = getQueryStringParameter(url, param: "test1")的方法

具有扩展的其他方法:

代码语言:javascript
运行
复制
extension URL {
    public var queryParameters: [String: String]? {
        guard
            let components = URLComponents(url: self, resolvingAgainstBaseURL: true),
            let queryItems = components.queryItems else { return nil }
        return queryItems.reduce(into: [String: String]()) { (result, item) in
            result[item.name] = item.value
        }
    }
}
票数 250
EN

Stack Overflow用户

发布于 2017-06-28 15:36:21

步骤1:创建URL扩展

代码语言:javascript
运行
复制
extension URL {
    func valueOf(_ queryParameterName: String) -> String? {
        guard let url = URLComponents(string: self.absoluteString) else { return nil }
        return url.queryItems?.first(where: { $0.name == queryParameterName })?.value
    }
}

步骤2:如何使用扩展

代码语言:javascript
运行
复制
let newURL = URL(string: "http://mysite3994.com?test1=blah&test2=blahblah")!

newURL.valueOf("test1") // Output i.e "blah"
newURL.valueOf("test2") // Output i.e "blahblah"
票数 101
EN

Stack Overflow用户

发布于 2017-07-15 19:33:47

我还做了一个URL扩展,但是将查询param查找放入下标。

代码语言:javascript
运行
复制
extension URL {
    subscript(queryParam:String) -> String? {
        guard let url = URLComponents(string: self.absoluteString) else { return nil }
        return url.queryItems?.first(where: { $0.name == queryParam })?.value
    }
}

用法:

代码语言:javascript
运行
复制
let url = URL(string: "http://some-website.com/documents/127/?referrer=147&mode=open")!

let referrer = url["referrer"]  // "147"
let mode     = url["mode"]      // "open"
票数 33
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41421686

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档