如果字符串包含某些字符,则Swift删除扩展字符?

时间:2017-01-01 04:22:39

标签: ios swift string image filter

我知道标题很复杂但基本上我试图这样做

    let gif = UIImage(gifName: (String(format: "%03d", self.animal.speciesId!)))
    self.gifIBO.setGifImage(gif, manager: gifManager)
    gifIBO.contentMode = UIViewContentMode.center

这是我的代码。我收集的图像集合使用格式"%03d"例如:(001,002,010)。但是我有超过1000张图像,其中一些图像包含额外的字母。

例如:300-f.gif,231-m.gif

跳过这些图片。我目前的解决方案是重命名每个具有扩展字符的图像。当swift发现满足某些要求的图像时,是否有任何本机方式可以让swift删除这些扩展字符?

例如。如果找到图像300-f.gif但前三个字符匹配,则需要删除字符串的其余部分并使用该图像而不是跳过它并返回

  

找不到300.gif

在控制台上。

1 个答案:

答案 0 :(得分:0)

您可以迭代捆绑包中的所有GIF,并查找以char开头的那个:

speciesId
  • let gif = Bundle.main.urls(forResourcesWithExtension: "gif", subdirectory: nil)! .first { let pattern = String(format: "%03d(-.)?", speciesId) return $0.lastPathComponent.range(of: pattern, options: [.regularExpression]) != nil }.map { UIImage(contentsOfFile: $0.path)! } 列出主套装中的所有gif文件
  • Bundle.main.urls(...)搜索名称与特定条件匹配的第一个文件。条件是基于first的正则表达式模式。该模式可以解决类似speciesId这样的正则表达方式:"字符串001(-.)?,可选地后跟短划线(001)和另一个字母({ {1}}表示任何字母)"
  • -将路径转换为.为您