2013-07-20 84 views
1

我試圖找到如何從「/games/usa/2013-05-01/game1.html」中提取「2013-05-01/game1」,但我不怎麼做那。我已經嘗試了一些正則表達式,但它沒有工作。而且我也不知道這是否是最好的方法。這是我到目前爲止所嘗試的。如何從字符串中提取字符串?

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

一種方法是使用NSStringcomponentsSeparatedByString:方法。這裏有一個例子

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所說的答案保留另一個作爲答案!但是,謝謝! –