iPhone How-to:解析URL中的键值对

在应用开发中有时会遇到从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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值