如何在swift 4中从特定字符到字符串末尾获取子字符串?

Pan*_*ngu 1 ios swift

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

/Users/user/Library/Developer/CoreSimulator/Devices/Hidden/data/Containers/Data/Application/Hidden/Documents/AppName/2017-07-07_21:14:52_0.jpeg
Run Code Online (Sandbox Code Playgroud)

我正在尝试检索我的图像文件的全名,如下所示: 2017-07-07_21:14:52_0.jpeg

我如何让子字符串从最后一个/文件路径的末尾开始?

我见过与使用子字符串相关的问题:

  1. Swift:如何从字符的开始到最后一个索引获取子字符串
  2. 字符串子字符串如何在 Swift 3 中工作
  3. Swift 中字符串的子字符串

但是,提供的答案并没有帮助我解决我的具体问题。

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

谢谢!

Mar*_*n R 5

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

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
}
Run Code Online (Sandbox Code Playgroud)

(针对 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
Run Code Online (Sandbox Code Playgroud)