Swift - 字符串删除代码未按预期执行

Swift - String removal code not performing as expected

我正在开发 macOS Swift-app,我需要在其中执行 folder/file 遍历。在此特定实例中,我需要删除文件路径的第一部分...即,如果文件的路径为 MyFolder/MyItem,我需要将其读作 MyItem 以便显示。

根据 中的回复,我编写了以下代码:

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

与上一个类似,但没有本地化 文件名。