我正在开发一个macOS Swift-app,我需要执行文件夹/文件遍历。在这个特定的例子中,我需要删除文件路径的第一部分...即,如果文件的路径为MyFolder/MyItem
,我需要将其读作MyItem
用于显示目的。
根据this answer的回复,我写了以下代码:
if fileString.hasPrefix("/") {
fileString.remove(at: fileString.startIndex)
print(fileString)
}
...我删除之前和之后的任何部分fileString
“/”。
然而,这似乎在实践中不起作用.... MyFile/MyItem
没有变为MyItem
,它仍然是MyFile/MyItem
。
您可以找到第一个(或最后一个)斜杠字符,并删除从字符串开头到包含该分隔符的所有内容,例如:
var fileString = "My Volume/My Folder/My Item"
if let r = fileString.range(of: "/", options: .backwards) {
fileString.removeSubrange(..<r.upperBound)
}
print(fileString) // My Item
但是,如果您的目的是提取文件名(最后一个路径组件)以进行显示,那么有一个专门的方法用于此目的:
let fileString = "My Volume/My Folder/My Item"
let displayName = FileManager.default.displayName(atPath: fileString)
print(displayName) // My Item
另一种方法是
let fileString = "My Volume/My Folder/My Item"
let baseName = URL(fileURLWithPath: fileString).lastPathComponent
print(baseName) // My Item
这与前一个类似,但不会本地化文件名。