Ios 查找与特定字符串的匹配项

Ios 查找与特定字符串的匹配项,ios,objective-c,nsstring,Ios,Objective C,Nsstring,我在documents文件夹中有一些图像文件,名称看起来像a_b.png,其中a是每个用户的ID(它是一个数字),b是他保存的图片的名称。因此,我想找到id=1的用户的所有图片,并将它们保存到一个数组中。我正在浏览每个图像文件,我想将文件名与模式1_*.png进行比较。我试过了 NSString *searchterm = [NSString stringWithFormat:@"%lu_*.png",clientID]; for(NSString filename in docFiles)

我在documents文件夹中有一些图像文件,名称看起来像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])
 {.....}
 }
但我没有得到任何结果

你知道我该怎么做吗?

我会:

  • 为每个客户端ID创建一个子目录,将该客户端的所有图像保存在此子目录中
  • 用于枚举该客户端子目录中的文件

  • 尝试检查前缀和后缀。我想这会比regex更有效,而且肯定更容易阅读

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

    正如large建议执行所需的星号通配符一样,您应该使用NSPredicate来过滤docfile。例如:

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

    但是trojanfoe的答案似乎是一个更好的做法。

    你可以使用Regex/nspredicate为每个循环打印
    filename
    searchterm
    ?可能重复尼斯建议。我试试看。谢谢