2011-12-23 29 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 
}