我目前有一个包含图像文件路径的字符串,如下所示:

/Users/user/Library/Developer/CoreSimulator/Devices/Hidden/data/Containers/Data/Application/Hidden/Documents/AppName/2017-07-07_21:14:52_0.jpeg

我正在尝试像这样检索图像文件的全名:2017-07-07_21:14:52_0.jpeg
我如何将子字符串从最后一个/之后开始到文件路径的末尾?

我看过与使用子字符串有关的问题:
  • Swift: How to get substring from start to last index of character
  • How does String substring work in Swift 3
  • Substring from String in Swift

  • 但是,提供的答案对我的特定问题没有帮助。

    我敢肯定这可能很简单,但是我得到的只是错误的子字符串范围。

    谢谢!

    最佳答案

    要回答您的直接问题:您可以搜索最后一个
    出现一个字符串并从该位置获取子字符串:

    let path = "/Users/user/.../AppName/2017-07-07_21:14:52_0.jpeg"
    if let r = path.range(of: "/", options: .backwards) {
        let imageName = String(path[r.upperBound...])
        print(imageName)  // 2017-07-07_21:14:52_0.jpeg
    }
    

    (代码已针对Swift 4及更高版本进行了更新。)

    但是,您真正想要的是文件路径的“最后路径组件”。URL具有用于此目的的适当方法:
    let path = "/Users/user/.../AppName/2017-07-07_21:14:52_0.jpeg"
    let imageName = URL(fileURLWithPath: path).lastPathComponent
    print(imageName) // 2017-07-07_21:14:52_0.jpeg
    

    10-08 07:47
    查看更多