gpt4 book ai didi

ios - 解析 URL 字符串以获取键值的最佳方法?

转载 作者:IT老高 更新时间:2023-10-28 11:25:18 25 4
gpt4 key购买 nike

我需要像这样解析一个 URL 字符串:

&ad_eurl=http://www.youtube.com/video/4bL4FI1Gz6s&hl=it_IT&iv_logging_level=3&ad_flags=0&endscreen_module=http://s.ytimg.com/yt/swfbin/endscreen-vfl6o3XZn.swf&cid=241&cust_gender=1&avg_rating=4.82280613104

我需要将 NSString 拆分为信号部分,例如 cid=241&avg_rating=4.82280613104。我一直在使用 substringWithRange: 执行此操作,但是这些值以随机顺序返回,因此搞砸了。是否有任何类可以轻松解析,您基本上可以将其转换为 NSDictionary 以便能够读取键的值(例如 ValueForKey:cid 应该返回 241) .还是有比使用 NSMakeRange 获取子字符串更简单的解析方法?

最佳答案

我也在 https://stackoverflow.com/a/26406478/215748 上回答了这个问题.

您可以使用 queryItemsURLComponents.

When you get this property’s value, the NSURLComponents class parses the query string and returns an array of NSURLQueryItem objects, each of which represents a single key-value pair, in the order in which they appear in the original query string.

let url = "http://example.com?param1=value1&param2=param2"
let queryItems = URLComponents(string: url)?.queryItems
let param1 = queryItems?.filter({$0.name == "param1"}).first
print(param1?.value)

或者,您可以在 URL 上添加扩展名以使事情变得更容易。

extension URL {
var queryParameters: QueryParameters { return QueryParameters(url: self) }
}

class QueryParameters {
let queryItems: [URLQueryItem]
init(url: URL?) {
queryItems = URLComponents(string: url?.absoluteString ?? "")?.queryItems ?? []
print(queryItems)
}
subscript(name: String) -> String? {
return queryItems.first(where: { $0.name == name })?.value
}
}

然后您可以通过参数名称访问参数。

let url = URL(string: "http://example.com?param1=value1&param2=param2")!
print(url.queryParameters["param1"])

关于ios - 解析 URL 字符串以获取键值的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8756683/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com