mirror of
https://github.com/wu736139669/ASHReactNative.git
synced 2026-08-05 05:54:53 +00:00
52 lines
1.5 KiB
Objective-C
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
|