您的位置:首页 > 移动开发 > Objective-C

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  iOS Internet Object-C url