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

时间:2018-01-04 19:49:31

标签: swift string macos prefix

我正在使用macOS Swift-app,我需要执行文件夹/文件遍历。在这个特定的例子中,我需要删除文件路径的第一部分...即,如果文件的路径为MyFolder/MyItem,我需要将其读作MyItem用于显示目的。

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

if fileString.hasPrefix("/") {
    fileString.remove(at: fileString.startIndex)
    print(fileString)
}

...我删除了fileString的任何部分,包括" /"。

但是,这似乎并没有在实践中发挥作用.... MyFile/MyItem没有变为MyItem,它仍然是MyFile/MyItem

1 个答案:

答案 0 :(得分:2)

您可以找到第一个(或最后一个)斜杠字符并删除 从字符串的开头到包括的所有内容 那个分隔符,例如:

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

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