2017-07-08 97 views
0

我現在有一個包含路徑的圖像文件,像這樣的字符串:如何從swift 4中的特定字符到字符串的末尾獲取子字符串?

/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

我該如何獲得子字符串從最後一個/開始到文件路徑的結尾?

我看到與使用子問題:

  1. Swift: How to get substring from start to last index of character
  2. How does String substring work in Swift 3
  3. Substring from String in Swift

然而,所提供的答案,並沒有幫助我與我的具體問題。

我確定它可能是非常簡單的東西,但我一直得到的是子字符串的錯誤範圍。

謝謝!

回答

1

要回答你直接的問題:您可以搜索過去 出現字符串並獲得子從該位置開始:

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

但是你想要的是文件路徑的「最後路徑組件」。 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 
+0

完美的,我不知道'URL'必須達到這一目的的方法! – Pangu

0

試試這個:

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 
相關問題