Obj C正規表現を使用してVimeoURLからclip_idを抽出する方法を教えてもらえますか?
http://vimeo.com/moogaloop.swf?clip_id=12050952&server=vimeo.com&show_title=1&show_byline=1&show_portrait=0&color=56872c&fullscreen=1
12050952を抽出したい。
ありがとう。
Obj C正規表現を使用してVimeoURLからclip_idを抽出する方法を教えてもらえますか?
http://vimeo.com/moogaloop.swf?clip_id=12050952&server=vimeo.com&show_title=1&show_byline=1&show_portrait=0&color=56872c&fullscreen=1
12050952を抽出したい。
ありがとう。
私はユーティリティクラスURLParserとその簡単で明確なものを使用しています。
URLParser *parser = [[[URLParser alloc] initWithURLString:url] autorelease];
NSString *videoId = [parser valueForVariable:@"clip_id"];
これがURLParserクラスです
#import <Foundation/Foundation.h>
@interface URLParser : NSObject {
NSArray *variables;
}
@property (nonatomic, retain) NSArray *variables;
- (id)initWithURLString:(NSString *)url;
- (NSString *)valueForVariable:(NSString *)varName;
@end
@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