iPhone How-to:解析URL中的键值对
2015-10-29 16:41
543 查看
在应用开发中有时会遇到从URL提取键值对的问题。比如从“http://www.google.com.hk/?hl=en&safe=active&biw=1680&bih=820&q=iPhone&aq=f&aqi=g10&aql=&oq=&fp=1d3bf50ad4aa3fea”获取biw或者q的值各是什么。如果只是某一个地方使用到可以“就地解决”,但如果频繁使用到就需要将这样的实现提取的同一的地方以便不同情况下调用。对于这种功能,NSString和NSDictionary就是比较合适的归属,为此我们可以通过Category对NSString进行扩展,实现代码如下:
@interface NSString(KVPair)
- (NSDictionary *)parametersWithSeparator:(NSString *)separator delimiter:(NSString *)delimiter;
@end
@implementation NSString(KVPair)
- (NSDictionary *)parametersWithSeparator:(NSString *)separator delimiter:(NSString *)delimiter {
NSArray *parameterPairs = [self componentsSeparatedByString:delimiter];
NSMutableDictionary *parameters = [NSMutableDictionary dictionaryWithCapacity:[parameterPairs count]];
for (NSString *currentPair in parameterPairs) {
NSRange range = [currentPair rangeOfString:separator];
if(range.location == NSNotFound)
continue;
NSString *key = [currentPair substringToIndex:range.location];
NSString *value =[currentPair substringFromIndex:range.location + 1];
[parameters setObject:value forKey:key];
}
return parameters;
}
@end
通过如下代码就可以解析出指定字符串中包括的键值对了。
NSString *rawString = @"hl=en&safe=active&biw=1680&bih=820&q=iPhone&aq=f&aqi=g10&aql=&oq=&fp=1d3bf50ad4aa3fea";
NSDictionary *kvPairs = [rawString parametersWithSeparator:@"=" delimiter:@"&"];
本文出自 “林家男孩” 博客,请务必保留此出处http://bj007.blog.51cto.com/1701577/539018
@interface NSString(KVPair)
- (NSDictionary *)parametersWithSeparator:(NSString *)separator delimiter:(NSString *)delimiter;
@end
@implementation NSString(KVPair)
- (NSDictionary *)parametersWithSeparator:(NSString *)separator delimiter:(NSString *)delimiter {
NSArray *parameterPairs = [self componentsSeparatedByString:delimiter];
NSMutableDictionary *parameters = [NSMutableDictionary dictionaryWithCapacity:[parameterPairs count]];
for (NSString *currentPair in parameterPairs) {
NSRange range = [currentPair rangeOfString:separator];
if(range.location == NSNotFound)
continue;
NSString *key = [currentPair substringToIndex:range.location];
NSString *value =[currentPair substringFromIndex:range.location + 1];
[parameters setObject:value forKey:key];
}
return parameters;
}
@end
通过如下代码就可以解析出指定字符串中包括的键值对了。
NSString *rawString = @"hl=en&safe=active&biw=1680&bih=820&q=iPhone&aq=f&aqi=g10&aql=&oq=&fp=1d3bf50ad4aa3fea";
NSDictionary *kvPairs = [rawString parametersWithSeparator:@"=" delimiter:@"&"];
本文出自 “林家男孩” 博客,请务必保留此出处http://bj007.blog.51cto.com/1701577/539018
相关文章推荐
- java-用HttpURLConnection发送Http请求.
- Android学习笔记(二九):嵌入浏览器
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- Internet Explorer 8 RC1 下载地址(英文版)
- 用vbs返回 Internet Explorer 的下载控件和 Applet 的列表
- VBScript 剪贴板抓取URL并在浏览器中打开
- 用vbs更改 Internet Explorer 的标题栏
- Internet Explorer 7 中文版发布
- 多语言翻译软件 Translator Internet 序列号
- 用vbs 实现从剪贴板中抓取一个 URL 然后在浏览器中打开该 Web 站点
- asp获取URL参数的几种方法分析总结[原创]_应用技巧_脚本之家
- zend framework框架中url大小写问题解决方法
- url decode problem 解决方法
- php url地址栏传中文乱码解决方法集合