【发布时间】:2011-01-15 16:09:53
【问题描述】:
我有一个通过解析 xml 站点得到的字符串。
http://www.arijasoft.com/givemesomthing.php?a=3434&b=435edsf&c=500
我想要一个能够解析 c 值的 NSString 函数。 有没有默认的函数,还是我自己手动写的。
【问题讨论】:
我有一个通过解析 xml 站点得到的字符串。
http://www.arijasoft.com/givemesomthing.php?a=3434&b=435edsf&c=500
我想要一个能够解析 c 值的 NSString 函数。 有没有默认的函数,还是我自己手动写的。
【问题讨论】:
您可以通过 RegExKit Lite 使用正则表达式: http://regexkit.sourceforge.net/RegexKitLite/
或者您可以将字符串分成组件(这不太好):
NSString *url=@"http://www.arijasoft.com/givemesomthing.php?a=3434&b=435edsf&c=500";
NSArray *comp1 = [url componentsSeparatedByString:@"?"];
NSString *query = [comp1 lastObject];
NSArray *queryElements = [query componentsSeparatedByString:@"&"];
for (NSString *element in queryElements) {
NSArray *keyVal = [element componentsSeparatedByString:@"="];
if (keyVal.count > 0) {
NSString *variableKey = [keyVal objectAtIndex:0];
NSString *value = (keyVal.count == 2) ? [keyVal lastObject] : nil;
}
}
【讨论】:
NSString *value = [element substringFromIndex:[element rangeOfString:@"="].location+1]; NSString *variableKey = [element substringToIndex:[element rangeOfString:@"="].location];
我创建了一个类,使用NSScanner 为您进行此解析,作为几天前same question 的答案。您可能会发现它很有用。
您可以像这样轻松使用它:
URLParser *parser = [[[URLParser alloc] initWithURLString:@"http://www.arijasoft.com/givemesomthing.php?a=3434&b=435edsf&c=500"] autorelease];
NSString *c = [parser valueForVariable:@"c"]; //c=500
【讨论】:
尝试以下方法:
NSURL *url = [NSURL URLWithString:@"http://www.arijasoft.com/givemesomthing.php?a=3434&b=435edsf&c=500"];
NSMutableString *parameterString = [NSMutableString stringWithFormat:@"{%@;}",[url parameterString]];
[parameterString replaceOccurrencesOfString:@"&" withString:@";"];
// Convert string into Dictionary
NSPropertyListFormat format;
NSString *error;
NSDictionary *paramDict = [NSPropertyListSerialization propertyListFromData:[parameterString dataUsingEncoding:NSUTF8StringEncoding] mutabilityOption: NSPropertyListImmutable format:&format errorDescription:&error];
// Now take the parameter you want
NSString *value = [paramDict valueForKey:@"c"];
【讨论】:
这是使用 NSURLComponents 和 NSURLQueryItem 类的原生 iOS 方法:
NSString *theURLString = @"http://www.arijasoft.com/givemesomthing.php?a=3434&b=435edsf&c=500";
NSArray<NSURLQueryItem *> *theQueryItemsArray = [NSURLComponents componentsWithString:theURLString].queryItems;
for (NSURLQueryItem *theQueryItem in theQueryItemsArray)
{
NSLog(@"%@ %@", theQueryItem.name, theQueryItem.value);
}
【讨论】: