2011-12-23 27 views
2

我需要幫助的正則表達式中的字符串:刪除字符串,目標C

/folder1/folder2/folder3/folder4/folder5/folder6/folder7/ololo/ImageName.png

我需要匹配:

ololo/ImageName.png

如何d你在Objective-C中做到了嗎?

+3

閱讀的NSString規範特別是關於路徑操作的函數列表底部附近的東西。 – 2011-12-23 13:28:48

+2

爲什麼你會使用正則表達式呢? – 2011-12-23 13:29:01

+2

好吧,如果你按照你的問題標題,那麼它應該匹配'ImageName.png'而不是'ololo/ImageName.png' - 請你能解釋所需的輸出更清晰嗎? – 2011-12-23 13:29:03

回答

0

這裏是你如何使用正則表達式做到這一點:

NSString *path = @"quick/brown/fox/jumps.png"; 
NSError *error; 
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"[^/]+[/][^/]+$" options:0 error:&error]; 
NSRange rangeOfMatch = [regex rangeOfFirstMatchInString:path options:0 range:NSMakeRange(0, path.length)]; 
NSLog(@"From %d, length %d", (int)rangeOfMatch.location, (int)rangeOfMatch.length); 

這個代碼是找到fox/jumps.png

+0

謝謝,此代碼返回「從12,長度13」,但需要NSString – Sergey 2011-12-23 14:15:19

+0

@Sergey你需要使用'[path substringWithRange:rangeOfMatch]'來獲得你的字符串。 – dasblinkenlight 2011-12-23 14:24:19

+0

謝謝大家,我的想象力幫助了:)。我用[path substringWithRange:rangeOfMatch] – Sergey 2011-12-24 04:28:06

1

匹配字符串。

NSPredicate *predicate = nil; 
predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES 'ololo/ImageName.png'"]; 
if (![predicate evaluateWithObject:@"/folder1/folder2/folder3/folder4/folder5/folder6/folder7/ololo/ImageName.png"]) 
{ 
// do your work here.. 
} 
+0

文件夾名稱,我不知道,我知道3姓文件夾 – Sergey 2011-12-23 13:35:13

0

你可以用這場比賽的刺痛 -

if ([@"/folder1/folder2/folder3/folder4/folder5/folder6/folder7/ololo/ImageName.png" rangeOfString:@"ololo/ImageName.png"].location != NSNotFound) 
{ 
    //true 
    // do your work here 
}