查找特定字符串的匹配项

时间:2016-01-14 13:33:54

标签: ios objective-c nsstring

我在文档文件夹中有一些图像文件,名称看起来像a_b.png,其中a是每个用户的ID(它是一个数字),b是他保存的图片的名称。所以我想找到用户的所有图片,例如id = 1并将它们保存到一个数组中。我浏览每个图像文件,我想比较文件的名称与模式1 _ * .png。我试过了

 NSString *searchterm = [NSString stringWithFormat:@"%lu_*.png",clientID];
 for(NSString filename in docFiles)
 {
 if([fileName isEqualTostring:searchterm])
 {.....}
 }

但我没有结果。

关于我如何实现这一目标的任何想法?

3 个答案:

答案 0 :(得分:1)

我会:

  1. 为每个客户端ID创建一个子目录,并在该子目录中保存该客户端的所有图像。
  2. 使用[NSFileManager contentsOfDirectoryAtPath:error:]枚举该客户端子目录中的文件。

答案 1 :(得分:0)

尝试检查前缀和后缀。我想这无论如何都会比正则表达更有效,而且更容易阅读。

 if([fileName hasPrefix:[NSString stringWithFormat:@"%ld_",clientID]] && [fileName hasSuffix:@".png") {
}

答案 2 :(得分:0)

如果有大型建议你做你想要的星号通配符,你应该使用NSPredicate来过滤docFiles。例如:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF like %@", searchterm];
NSArray *results = [docFiles filteredArrayUsingPredicate:predicate];

但是,木马的回答似乎是一种更好的做法。