Reputation: 3819
I currently have a string containing a path to an image file like so:
/Users/user/Library/Developer/CoreSimulator/Devices/Hidden/data/Containers/Data/Application/Hidden/Documents/AppName/2017-07-07_21:14:52_0.jpeg
I'm trying to retrieve the full name of my image file like so: 2017-07-07_21:14:52_0.jpeg
How would I get the substring starting after the last /
to the end of the file path?
I've seen questions related to using substrings:
However, the provided answers did not help me with my specific problem.
I'm sure it may be something very simple, but all I keep getting is the wrong range of substrings.
Thanks!
Upvotes: 2
Views: 1316
Reputation: 540105
To answer your direct question: You can search for the last occurrence of a string and get the substring from that position:
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
}
(Code updated for Swift 4 and later.)
But what you really want is the "last path component" of a file path.
URL
has the appropriate method for that purpose:
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
Upvotes: 5
Reputation: 3417
Try this :
1)
var str = "/Users/user/Library/Developer/CoreSimulator/Devices/Hidden/data/Containers/Data/Application/Hidden/Documents/AppName/2017-07-07_21:14:52_0.jpeg"
let array = str.components(separatedBy: "/")
print(array[array.count-1]) //2017-07-07_21:14:52_0.jpeg
2)
let str = "/Users/user/Library/Developer/CoreSimulator/Devices/Hidden/data/Containers/Data/Application/Hidden/Documents/AppName/2017-07-07_21:14:52_0.jpeg"
var fileName = URL(fileURLWithPath: str).lastPathComponent
print(fileName) //2017-07-07_21:14:52_0.jpeg
let fileName = URL(fileURLWithPath: path).deletingPathExtension().lastPathComponent
print(fileName) //2017-07-07_21:14:52_0
Upvotes: 1