评估/比较NSString和通配符?

时间:2011-02-23 21:37:48

标签: iphone objective-c nsstring wildcard

您好 我正在尝试评估NSString以查看它是否符合某个标准,其中包含一个或多个星号字符形式的通配符。

示例:

NSString *filePath = @"file://Users/test/Desktop/file.txt";
NSString *matchCriteria = @"file://*/file.*";

我想看看filePath是否匹配(适合?)matchCriteria,在此示例中确实如此。 有谁知道我该怎么做呢?

非常感谢!

3 个答案:

答案 0 :(得分:7)

NSRegularExpression外,您还可以使用NSPredicate

NSString *filePath = @"file://Users/test/Desktop/file.txt";
NSString *matchCriteria = @"file://*/file.*";

NSPredicate *pred = [NSPredicate predicateWithFormat:@"self LIKE %@", matchCriteria];

BOOL filePathMatches = [pred evaluateWithObject:filePath];

Predicate Programming Guide是一份全面的文档,旨在说明谓词的工作原理。如果您要根据某些条件筛选一系列项目,它们会特别有用。

答案 1 :(得分:3)

NSString实现了这些方法:

@interface NSObject (NSComparisonMethods)
- (BOOL)isLike:(NSString *)object;
- (BOOL)isCaseInsensitiveLike:(NSString *)object;
@end

它们比NSPredicate和NSRegularExpression快得多。

答案 2 :(得分:1)

您可以使用NSRegularExpression