从响应string中提取令牌

如何从响应string中提取令牌? (我不知道令牌的长度,所以我不能在这里使用NSRange)

oauth_callback_confirmed=true&oauth_token=72157632316931441 -fadcd6ef70cbd06c&oauth_token_secret=a7e7b046a8960559 

当前的代码是(它给出令牌和string的其余部分):

 NSRange access_token_range = [operation.responseString rangeOfString:@"oauth_token="]; if (access_token_range.length > 0) { int from_index = access_token_range.location + access_token_range.length; NSString *access_token = [operation.responseString substringFromIndex:from_index]; NSLog(@"access_token: %@", access_token); } 

将响应string分隔到键值对然后分别处理它们会更好(更优雅):

 NSString *token = nil; NSArray *kvpairs = [operation.responseString componentsSeparatedByString:@"&"]; for (NSString *kvpair in kvpairs) { NSArray *keyAndValue = [kvpair componentsSeparatedByString:@"="]; NSString *key = [keyAndValue objectAtIndex:0]; if ([key isEqualToString:@"oauth_token"]) { token = [keyAndValue objectAtIndex:1]; break; } } 

现在token将包含令牌或nil如果无法find。