Files
ASHReactNative/Sources/NSString+Util.m
T
2017-04-10 17:56:27 +08:00

52 lines
1.5 KiB
Objective-C

//
// NSString+Util.m
// ASHReactNative
//
// Created by xmfish on 17/4/10.
// Copyright © 2017年 ash. All rights reserved.
//
#import "NSString+Util.h"
@implementation NSString (Util)
- (NSDictionary*)ash_queryDictionary
{
NSArray *array = [self componentsSeparatedByString:@"?"];
NSString *encodedString = array.lastObject;
NSMutableDictionary *result = [NSMutableDictionary dictionary];
NSArray *pairs = [encodedString componentsSeparatedByString:@"&"];
for (NSString *kvp in pairs) {
if ([kvp length] == 0) {
continue;
}
NSRange pos = [kvp rangeOfString:@"="];
NSString *key;
NSString *val;
if (pos.location == NSNotFound) {
key = [self ash_stringByUnescapingFromURLQuery:kvp];
val = @"";
} else {
key = [self ash_stringByUnescapingFromURLQuery:[kvp substringToIndex:pos.location]];
val = [self ash_stringByUnescapingFromURLQuery:[kvp substringFromIndex:pos.location + pos.length]];
}
if (!key || !val) {
continue; // I'm sure this will bite my arse one day
}
[result setObject:val forKey:key];
}
return result;
}
- (NSString *)ash_stringByUnescapingFromURLQuery:(NSString *)string
{
NSString *deplussed = [string stringByReplacingOccurrencesOfString:@"+" withString:@" "];
return [deplussed stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
}
@end