2017-07-08 17 views
0

私は現在、そのような画像ファイルへのパスを含む文字列を持っている:特定の文字から文字列の最後までの部分文字列を得る方法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

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

この試してみてください:あなたは、文字列の最後 発生を検索し、部分文字列を取得することができます:あなたの直接的な質問に答えるために)

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 
関連する問題