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

2024-06-28

我需要解析一个 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

我需要将字符串分成单个部分,例如cid=241 and &avg_rating=4.82280613104。我一直在这样做substringWithRange:但值以随机顺序返回,因此会造成混乱。是否有任何类可以轻松解析,您基本上可以将其转换为 NSDictionary 以便能够读取键的值(例如 ValueForKey:cid应该返回241)。或者是否有另一种比使用更简单的方法来解析它NSMakeRange获取子串?


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

您可以使用queryItems https://developer.apple.com/reference/foundation/urlcomponents in URLComponents.

当您获取此属性的值时, NSURLComponents 类会解析查询字符串并返回 NSURLQueryItem 对象的数组,每个对象代表一个键值对,按照它们在原始查询字符串中出现的顺序排列。

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"])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

解析 URL 字符串以获取键值的最佳方法? 的相关文章

  • CLLocationManager.requestLocation()大约需要10秒

    CLLocationManager requestLocation 大约需要 10 秒才能开火didUpdateLocations event 以下是设置的属性CLLocationManager let locationManager CL
  • 如何将数据从 swift 传递到 javascript?

    我知道如何将数据从 javascript 传递到 swift 但不知道如何将数据从 swift 传递到 javascript 我用来将数据从 javascript 传递到 swift 的方法如下 h1 WebView Test 3 h1
  • 这可以强制iOS键盘弹出英文键盘吗?

    如果用户的 iOS 设备上有多个键盘 这可以强制弹出英文键盘吗 谢谢 From iOS 文本编程指南 https developer apple com library ios documentation StringsTextFonts
  • 检测 WKWebView 何时完成加载

    我怎样才能检测到我的WKWebView是否已完成加载 以便我可以从中获取 URL 例如使用委托方法 我实现了委托方法WKWebView但我无法检测到视频何时完成加载 import UIKit import WebKit class View
  • 如何从 CVPixelBufferRef 转换为 openCV cv::Mat

    我想对一个执行一些操作CVPixelBufferRef并出来一个cv Mat 裁剪到感兴趣的区域 缩放到固定尺寸 均衡直方图 转换为灰度 每像素 8 位 CV 8UC1 我不确定最有效的顺序是什么 但是 我确实知道所有操作都可以在 open
  • Swift - 创建“Array”类型的自定义类

    如何在 swift 中创建一个类型的自定义类Array 确切地说 我有一个自定义类型类Car 现在我想创建一个单例 它是一个数组Cars 因为我希望能够从我的应用程序中的任何位置访问它 我的解决方法是将我的单例定义为NSMutableArr
  • 连接到进程后 Xcode 控制台为空[重复]

    这个问题在这里已经有答案了 我在 iPhone 上构建了一个应用程序 退出它 再次启动它 然后成功附加到 Xcode 中的进程 现在我在日志导航器中运行了调试 但我的控制台是空的 我不应该在那里看到所有常用的控制台输出吗 您可以在设备日志中
  • 如何在表格视图中对图像进行动画处理以同时扩展和打开另一个视图控制器?

    我正在制作一个消息应用程序 我希望用户单击我的表格视图中的图像 它应该扩展到全屏并在导航栏上显示不同的控件 我该怎么办 我想我可以拍摄相同的图像 将 UIImageView 放在原始单元格图像之上并将其动画化为全屏 但是我如何在没有闪烁 延
  • Swift 中的 MFMailComposeViewController

    这是示例代码 import UIKit import MessageUI class ViewController UIViewController MFMailComposeViewControllerDelegate IBAction
  • 通过创建 un-eval-uatable(“不可解析的 cruft”)JSON 来提高安全性?

    我们正在考虑对 json 使用不可解析的 curft 方法作为额外的安全级别 在查看这些方法时 我遇到了谷歌的while 1 和脸书的for 然后又提到 我看过有关以下内容的评论while 1 也就是说 1 是数字可能会被破坏 所以我的方法
  • iOS-Charts 如何将 UIImage 放在点旁边

    我想使用 iOS Charts 和 Swift 来绘制一些折线图来显示数据 现在 我有一个要求 在每个点旁边放置一个小图标 现在我可以在图表上添加 UIImage 但问题是如何正确获取每个点的 CGPoint 坐标 如果我改变设备或设备类型
  • 在 UITextView 内画一条线 - NSAttributedString

    我想在里面画一条可定制的线UITextView由一些文本组成 使用NSAttributedString 这是我尝试过的 NSString unicodeStr NSString stringWithFormat C C C 0x00A0 0
  • 文件从 iOS 应用程序传输到 Mac 应用程序?

    是否可以在 Mac 应用程序和 iOS 应用程序之间传输文件 我想通过 Wifi 将 iOS 应用程序中的文档目录中的文件传输到 Mac 应用程序 我该怎么做 嗯 从 iOS 5 开始 就有了 iCloud 由于这仍处于保密协议之下 我只需
  • 在`../node_modules/react-native/React`中没有找到`React-Core`的podspec

    我正在使用 React Native 当我尝试上传 Pod 时遇到此问题 我已经成功安装了node modules 但遇到了这个问题 问题是什么 如果我们删除 package lock json 和 node modules 文件夹 我会重
  • Reactive Cocoa - 以编程方式设置文本时,不会调用 UITextView 的 rac_textSignal

    我正在实现一个聊天 UI 并使用 Reactive Cocoa 在用户键入时调整聊天气泡的大小 目前 我正在根据 textview 更新 UI 的布局rac textSignal 一切都工作得很好 除了一点 当用户sends消息中 我以编程
  • Google 跨客户端身份验证是否可以在 iOS 上实现?如果可以,如何实现?

    我正在使用 oAuth2 并且我的 google API 控制台中有一个项目 其中注册了 iOS 客户端和 Web 客户端 我想从我的 iOS 应用程序进行身份验证 并让我的 Web 后端检索访问令牌 以便它可以使用 Google api
  • 导航标题颜色更改问题

    当我弹出控制器时 我面临的导航标题颜色没有改变 请找到下面的代码 ProfilescreenVC swift override func viewWillAppear animated Bool super viewWillAppear a
  • 为什么我的侧载应用程序在几天后停止工作?

    所以我实际上对 iOS 开发有点陌生 然而 在学习如何操作后 我已经制作了一些应用程序 但我注意到的一件事是 如果我使用手机来测试我的应用程序 该应用程序将在插入时运行 也许一两天后 但在那之后 如果我尝试打开它 它就会停止工作并崩溃 就像
  • NSCollectionView 自定义布局启用滚动

    我无法垂直和水平滚动来使用自定义布局NSCollectionView 根据文档 在我的子类中我返回collectionViewContentSize如果太大 则会在集合视图的封闭滚动视图中自动启用滚动 但是 即使我将所有元素排列在水平行中
  • 比较 UITextView 中的文本?

    我们如何比较输入的文本UITextVIew用代码中的默认文本来确定它们是否相同 您可以使用以下方法NSString http developer apple com library mac documentation Cocoa Refer

随机推荐

  • 当 R 中出现“warnings()”时中断循环

    我有一个问题 我正在运行一个循环来处理多个文件 我的矩阵非常巨大 因此如果我不小心 我经常会耗尽内存 如果创建任何警告 是否有办法打破循环 它只是继续运行循环并报告它在很久以后失败 烦人 聪明的 stackoverflow ers 有什么想
  • iOS 7 UIBarButtonItem 字体在点击时发生变化

    我正在尝试改变我的UIBarButtonItem字体 ViewController 加载时看起来不错 但是 如果我点击栏按钮 或者向右滑动 就像移动到上一个 ViewController 但然后拉回到当前的 ViewController 字
  • 如何将 Console.Readkey 转换为 int c#

    我正在尝试将用户输入键转换为 int 用户将输入 1 到 6 之间的数字 这是我到目前为止在方法中所拥有的 它不起作用 但抛出格式异常未得到处理 var UserInput Console ReadKey var Bowl int Pars
  • Python:脚本的目录

    我一直在寻找解决方案 但尚未找到我需要的 脚本路径 dir to script script py or C dir script py 异常结果 script py output dir to script cd script scrip
  • C 标准是否规定平台不得定义超出标准中给出的行为

    C 标准明确规定编译器 库组合可以使用以下代码执行任何操作 int doubleFree char p int temp p free p free p return temp 然而 如果编译器不需要使用特定的捆绑库 C 标准中是否有任何内
  • 仅使用 Python 生成示例 SOAP 请求和响应模板。没有 Zeep、SOAPUI 或任何其他工具

    我对 python 很陌生 对网络服务也很陌生 我最近开始了一个我非常热衷的项目 这是一个很好的学习机会 然而 经过几周的研究 我陷入了困境 需要一些帮助 我想做的是制作我自己的 WSDL 界面 其工作方式类似于 SOAPUI 我的程序将解
  • Express + EJS - 将参数传递给 EJS 视图

    我对 Node js Express EJS 相当陌生 我最近注意到 当我将参数从 Express 请求处理程序传递到 EJS 视图并省略参数名称时 它会根据变量名称创建一个名称 例如 在下面的代码中 server js var expre
  • 查找平面图(几何形状)的边界(边界)边缘

    我有顶点和边列表来描述平面几何形状 面是三角形 例如 a b e c d Verts a b c d e Edges a b a c a d a e b c c d d e 这就是我所掌握的有关该特定平面几何形状的所有信息 在此示例中 唯一
  • 在Java桌面应用程序中嵌入谷歌地图

    我想在 JPanel 上嵌入谷歌地图 由于我想要放大 缩小等功能 因此使用静态图像是不可行的 为了实现这一点 我可能需要在我的 Java 桌面应用程序中嵌入一个网页 显示谷歌地图 我读到我需要像 WebKit 替代品 这样的东西来完成这个任
  • 有没有办法从文档中隐藏宏模式?

    从 Rust 1 6 0 开始 生成的文档隐藏了每个宏模式的实现 有没有办法从 Cargo 生成的文档中隐藏一些模式 macro rules mc hide this entire pattern impl arg expr gt 42 a
  • Laravel 数据透视表观察者

    我有一个具有更新方法的观察者 观察者ServiceProvider php public function boot Relation observe RelationObserver class 关系观察者 php public func
  • JS:替换对象中与模式匹配的所有字符串值?

    我正在寻找一种有效的方法来替换对象内的值 如果它们与特定模式匹配 var shapes square attr stroke stroke width circle attr fill stroke width 例如 我希望能够将所有 图案
  • 为什么我需要使用 document.write 而不是 DOM 操作方法?

    我正在尝试一种新的广告服务 据我所知 他们没有提供加载广告的功能界面 我们希望根据用户的屏幕尺寸展示不同的广告尺寸 而该服务需要您加载不同的广告尺寸 js每种尺寸的 URL 我最初尝试写
  • 关闭 RMI 注册表

    使用RMI将String对象从WebAppA传递到WebAppB WebAppB是RMIServer 而WebAppA是RMIClient 我在WebAppB中添加了ContextListener 以便在tomcat中初始化上下文时立即启动
  • 迭代格雷码更改位置的有效方法

    有多种迭代方式n 位格雷码 https en wikipedia org wiki Gray code Constructing an n bit Gray code 有些比其他更有效率 但是 我实际上并不需要格雷码 而是想迭代格雷码列表中
  • 如何将缓冲区包装为stream2可读流?

    如何使用stream2接口将node js缓冲区转换为可读流 我已经找到了这个answer https stackoverflow com questions 13230487 converting a buffer into a read
  • git svn - cygwin下的错误

    我有 cygwin 和 git 我正在尝试使用 git 提交到 svn git svn dcommit 但它失败并出现奇怪的错误 git svn dcommit 4 main perl 5536 C cygwin bin perl exe
  • Facebook Canvas:redirect_uri 不属于应用程序

    我正在尝试将 facebook canvas 集成到当前正在运行的 Web 应用程序上localhost 8080运行该网站后 它给了我这个错误 API Error Code 191 API Error Description The sp
  • R data.table 使用列作为参数将函数应用于行

    我有以下内容data table x structure list f1 1 3 f2 3 5 Names c f1 f2 row names c NA 3L class c data table data frame 我想对每一行应用一个
  • 解析 URL 字符串以获取键值的最佳方法?

    我需要解析一个 URL 字符串 如下所示 ad eurl http www youtube com video 4bL4FI1Gz6s hl it IT iv logging level 3 ad flags 0 endscreen mod