У меня есть строка
11/Passion/01PassionAwakening.mp3
Мне нужно удалить последний компонент пути
01PassionAwakening.mp3
то он выглядит как
11/Passion
Как это сделать?
и мне нужны оба компонента для моей потребности
У меня есть строка
11/Passion/01PassionAwakening.mp3
Мне нужно удалить последний компонент пути
01PassionAwakening.mp3
то он выглядит как
11/Passion
Как это сделать?
и мне нужны оба компонента для моей потребности
Вы можете разделить свой URL-адрес на две части. Ниже приводится
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
Для получения дополнительной информации, пожалуйста, посмотрите
Вы должны действительно покончить с унаследованными классами NS
Objective-C и ручным разбиением строки пути, где это возможно. Вместо этого используйте URL
:
let url = URL(fileURLWithPath: "a/b/c.dat", isDirectory: false)
let path = url.deletingLastPathComponent().relativePath // 'a/b'
let file = url.lastPathComponent // 'c.dat'
Это также работает для Swift 3.0:
let fileName = NSString(string: "11/Passion/01PassionAwakening.mp3").lastPathComponent
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!")
}
Swift 4:
let components = path.split(separator: "/")
let directory = components.dropLast(1).map(String.init).joined(separator: "/")
версия Swift 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!")
}
откат к NSString:
String Extension {
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