我有一个字符串
11/Passion/01PassionAwakening.mp3
我需要删除最后一个路径组件
01PassionAwakening.mp3
然后它看起来像
11/Passion
怎么办?
我需要两个组件以满足我的需要
答案 0 :(得分:22)
您可以将您的网址分为两部分。以下是
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
欲了解更多信息,请查看
答案 1 :(得分:9)
您应该尽可能地废弃遗留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'
答案 2 :(得分:6)
这也适用于Swift 3.0:
let fileName = NSString(string: "11/Passion/01PassionAwakening.mp3").lastPathComponent
答案 3 :(得分:5)
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!")
}
斯威夫特4:
let components = path.split(separator: "/")
let directory = components.dropLast(1).map(String.init).joined(separator: "/")
答案 4 :(得分:4)
Swift 3.0版
The value 'null' is not valid for To
答案 5 :(得分:1)
回滚到NSString:
扩展字符串{
var ns: NSString {
return self as NSString
}
var pathExtension: String {
return ns.pathExtension
}
var lastPathComponent: String {
return ns.lastPathComponent
}
var stringByDeletingLastPathComponent: String {
return ns.deletingLastPathComponent
}
}
因此您可以这样做:
let folderPath = pathString.stringByDeletingLastPathComponent
答案 6 :(得分:0)
即兴创建URL字符串的解决方案。非常感谢ingconti
extension String {
var ns: URL? {
return URL.init(string: self)
}
var pathExtension: String {
return ns?.pathExtension ?? ""
}
var lastPathComponent: String {
return ns?.lastPathComponent ?? ""
}
var stringByDeletingLastPathComponent: String {
return ns?.deletingLastPathComponent().absoluteString ?? ""
}
}