我需要解析如下所示的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.82280613241这样的符号部分.我一直在对substringWithRange:执行此操作,但是值以随机顺序返回,所以这会搞砸它.有没有什么类可以简化解析,基本上可以将其转换为NSDictionary,以便能够读取键的值(例如,ValueForKey:cid应该返回241).或者,有没有另一种比使用NSMakeRange获得子字符串更简单的解析方法呢?

推荐答案

edit (June 2018): 100. Apple added 101 in iOS 7

我将创建一个字典,使用以下命令获取键/值对的数组

NSMutableDictionary *queryStringDictionary = [[NSMutableDictionary alloc] init];
NSArray *urlComponents = [urlString componentsSeparatedByString:@"&"];

然后填充字典:

for (NSString *keyValuePair in urlComponents)
{
    NSArray *pairComponents = [keyValuePair componentsSeparatedByString:@"="];
    NSString *key = [[pairComponents firstObject] stringByRemovingPercentEncoding];
    NSString *value = [[pairComponents lastObject] stringByRemovingPercentEncoding];

    [queryStringDictionary setObject:value forKey:key];
}

然后,您可以使用

[queryStringDictionary objectForKey:@"ad_eurl"];

这是未经测试的,您可能应该多做一些错误测试.

Ios相关问答推荐

[NSJSONSerializationdataWithJSONObserver:选项:错误:]:SON写入中无效的顶级类型

在SwiftData中从@ Query创建可排序、有序和分组的数据

缺少预期的键:';NSPrival yCollectedDataTypes';

当包含UITextView的inputAccessoryView显示键盘时,iOS UITableView内容会出现UINavigationBar奇怪的错误

有没有办法将滚动视图RTL(阿拉伯语)与Ltr动画一起使用?

如何在不将应用程序留在SwiftUI上的情况下更改语言?

如何使用Swift以编程方式更改SVG文件中某些元素的 colored颜色

快速 keys 串更新只有在第二次try 时才起作用

如何结合`@dynamicMemberLookup`和`ExpressibleByStringInterpolation`来实现方法链?

比较 `某个协议` 实例时出现编译错误

在自定义 ButtonStyle 中修改形状 colored颜色

CGPath intersection(_:using:) 和朋友(iOS 16 中的新功能)坏了?

为什么常量属性可能在 Swift 类中被初始化两次?

以正确的方式在 Text() 中使用 colored颜色

如何将单个按钮传递到自定义 ConfirmationDialog

在 Swift 中禁用向后滑动手势

核心数据 - 无法在路径加载优化模型

呈现和关闭模态视图控制器

使用 Swift 在一个 ViewController 中强制横向模式

使用 xib 创建可重用的 UIView(并从情节提要中加载)