ios - 如果字符串包含某些字符,Swift 会删除扩展字符吗?

标签 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 发现满足某些要求的图像时,是否有任何本地方法可以删除这些扩展字符?

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

Could not find 300.gif

在控制台上。

最佳答案

您可以迭代 bundle 中的所有 gif,并查找以 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)!
    }
  • Bundle.main.urls(...) 列出主包中的所有 gif 文件
  • first 搜索名称符合特定条件的第一个文件。条件是基于您的 speciesId 的正则表达式模式。该模式的结果类似于 001(-.)?,这是正则表达式的表达方式:“字符串 001,可选地后跟破折号 ( -)和另一个字母(. 表示任何字母)”
  • map 将路径转换为 ​​UIImage 供您使用

关于ios - 如果字符串包含某些字符,Swift 会删除扩展字符吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41413339/

相关文章:

用于正确连接的 MySQL 字符串操作

ios - 如何在 Parse 中按数组长度查询

ios - 键盘打开时以编程方式提升 UI 文本字段

java - 如何在 Java 中使用 MapStruct 将字符串转换为日期?

ios - 清除 AFNetworking 2 中响应的 cookie

ios - 没有为自定义 UITextfield 调用 deleteBackward

php - 如何比较数组中的字符串匹配?

ios - 如何使用 CTCallCenter :setCallEventHandler: that occurred while the app was suspended? 获取调用事件

objective-c - Command/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/clang++ 失败,退出代码为 1

ios - 检测主题标签,包括主题标签中的 &