2015-11-23 5 views
9

私は最後のパスコンポーネントSwiftで文字列の最後のパスコンポーネントを削除するには?

01PassionAwakening.mp3 

が、それはそれを行うことができますどのように

11/Passion 

ように見える削除する必要がある文字列

11/Passion/01PassionAwakening.mp3 

をしましたか?

と私は次の2つの部分にあなたのURLを分離することができ、私の必要性

+2

NSStringのドキュメントは、この方法が唯一のファイルパス(URLのではない、例えば、文字列表現)で動作することを「パスの操作」... –

答えて

16

のための両方のコンポーネントが必要です。これは一見

https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/Strings/Articles/ManipulatingPaths.html

+1

ノートに関するセクション全体を持っています。 – user3441734

+0

文字列表現はどういう意味ですか? –

+0

https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/#//apple_ref/occ/instp/NSString/stringByDeletingLastPathComponent – user3441734

4
let str = "11/Passion/01PassionAwakening.mp3" 
if !str.isEmpty { 
    let components = str.characters.split("/") 
    let head = components.dropLast(1).map(String.init).joinWithSeparator("/") 
    let tail = components.dropFirst(components.count-1).map(String.init)[0] 

    print("head:",head,"tail:", tail) // head: 11/Passion tail: 01PassionAwakening.mp3 
} else { 
    print("path should not be an empty string!") 
} 
+0

Swift 3.0.1には構文が必要です:split(separator: "/") – clearlight

4

スウィフト3.0バージョン

if !str.isEmpty { 
     let components = str.characters.split(separator: "/") 
     let head = components.dropLast(1).map(String.init).joined(separator: "/") 
     let words = components.count-1 
     let tail = components.dropFirst(words).map(String.init)[0] 

     print("head:",head,"tail:", tail) // head: 11/Passion tail: 01PassionAwakening.mp3 
    } else { 
     print("path should not be an empty string!") 
    } 
を持ってしてください詳しくは

let str : NSString = "www.music.com/Passion/PassionAwakening.mp3" 
    let path : NSString = str.stringByDeletingLastPathComponent 
    let ext : NSString = str.lastPathComponent 

    print(path) 
    print(ext) 

出力

www.music.com/Passion 
PassionAwakening.mp3 

以下に示します。

5

これは、同様スウィフト3.0のために動作します:

let fileName = NSString(string: "11/Passion/01PassionAwakening.mp3").lastPathComponent 
4

あなたは本当にレガシーNS Objective-Cのクラスと手動のパス文字列分割可能と離れて行う必要があります。代わりにURLを使用してください:

let url = URL(fileURLWithPath: "a/b/c.dat") 
let path = url.deletingLastPathComponent().relativePath // 'a/b' 
let file = url.lastPathComponent // 'c.dat'