gpt4 book ai didi

NSURL 提取参数字符串中某个键的单个值

转载 作者:行者123 更新时间:2023-12-03 06:54:49 26 4
gpt4 key购买 nike

我有一个 NSURL:

服务器调用?x=a&y=b&z=c

获取 y 值最快、最有效的方法是什么?

谢谢

最佳答案

更新:

自 2010 年撰写本文以来,Apple 似乎已经为此目的发布了一套工具。请参阅下面的答案。

老派解决方案:

嗯,我知道你说“最快的方法”,但在我开始使用 NSScanner 进行测试后,我就停不下来了。虽然这不是最短的方法,但如果您打算经常使用该功能,那么它肯定很方便。我创建了一个 URLParser 类,它使用 NSScanner 获取这些变量。使用方法很简单:

URLParser *parser = [[[URLParser alloc] initWithURLString:@"http://blahblahblah.com/serverCall?x=a&y=b&z=c&flash=yes"] autorelease];
NSString *y = [parser valueForVariable:@"y"];
NSLog(@"%@", y); //b
NSString *a = [parser valueForVariable:@"a"];
NSLog(@"%@", a); //(null)
NSString *flash = [parser valueForVariable:@"flash"];
NSLog(@"%@", flash); //yes

执行此操作的类如下(*源文件位于帖子底部):

URLParser.h

@interface URLParser : NSObject {
NSArray *variables;
}

@property (nonatomic, retain) NSArray *variables;

- (id)initWithURLString:(NSString *)url;
- (NSString *)valueForVariable:(NSString *)varName;

@end

URLParser.m

@implementation URLParser
@synthesize variables;

- (id) initWithURLString:(NSString *)url{
self = [super init];
if (self != nil) {
NSString *string = url;
NSScanner *scanner = [NSScanner scannerWithString:string];
[scanner setCharactersToBeSkipped:[NSCharacterSet characterSetWithCharactersInString:@"&?"]];
NSString *tempString;
NSMutableArray *vars = [NSMutableArray new];
[scanner scanUpToString:@"?" intoString:nil]; //ignore the beginning of the string and skip to the vars
while ([scanner scanUpToString:@"&" intoString:&tempString]) {
[vars addObject:[tempString copy]];
}
self.variables = vars;
[vars release];
}
return self;
}

- (NSString *)valueForVariable:(NSString *)varName {
for (NSString *var in self.variables) {
if ([var length] > [varName length]+1 && [[var substringWithRange:NSMakeRange(0, [varName length]+1)] isEqualToString:[varName stringByAppendingString:@"="]]) {
NSString *varValue = [var substringFromIndex:[varName length]+1];
return varValue;
}
}
return nil;
}

- (void) dealloc{
self.variables = nil;
[super dealloc];
}

@end

*如果您不喜欢复制和粘贴,您可以下载源文件 - 我对此做了一篇简短的博客文章 here .

关于NSURL 提取参数字符串中某个键的单个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2225814/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com