2013-07-20 7 views
1

Я пытаюсь найти, как извлечь "2013-05-01/game1" from "/games/usa/2013-05-01/game1.html", но я не знаю, как это сделать что. Я уже пробовал некоторое Regex, но это не сработало. И я также не знаю, было ли это лучшим способом. Это то, что я пробовал до сих пор.Как извлечь строку из строки?

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"/[0-9]{4}-[0-9]{2}-[0-9]-{2}\//\.*$)" options:NSRegularExpressionCaseInsensitive error:NULL]; 
NSTextCheckingResult *newSearchString = [regex firstMatchInString:opening_time options:0 range:NSMakeRange(0, [opening_time length])]; 
NSString *substr = [opening_time substringWithRange:newSearchString.range]; 
NSLog(@"%@", substr); 

Любая помощь будет оценена по достоинству.

+1

Вы можете положиться на формат, окружающий строку? Будет ли это всегда быть вашим примером? –

+0

да, всегда так! –

ответ

4

Один из способов будет использовать NSString «s componentsSeparatedByString: метод. Вот пример

NSString *str = [@"/games/usa/2013-05-01/game1.html" stringByDeletingPathExtension]; 
NSArray *components = [str componentsSeparatedByString:@"/"]; 
NSString *result = [NSString stringWithFormat:@"%@/%@", [components objectAtIndex:3], [components objectAtIndex:4]]; 
NSLog(@"%@", result); 

Конечно, это было бы рассчитывать на то, что формат никогда не меняется, и это, скорее всего, не будет работать, если он действительно меняется.

+1

Регулярно часто перегружает 90% случаев, когда он используется. Хорошо для вас, чтобы указать на прямое решение. – hd1

+0

@ hd1 благодарит за это! –

2

попробовать это:

@"[0-9]{4}-[0-9]{2}-[0-9]{2}/[^.]+" 

или это:

@"[0-9]{4}-[0-9]{2}-[0-9]{2}/.+?(?=\\.html)" 
+0

Это тоже работает, но я буду держать другой в качестве ответа, основываясь на том, что сказал @ hd1! Но спасибо! –

Смежные вопросы