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

问题描述 投票:1回答:1

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

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

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

...我删除之前和之后的任何部分fileString“/”。

然而,这似乎在实践中不起作用.... MyFile/MyItem没有变为MyItem,它仍然是MyFile/MyItem

swift string macos prefix
1个回答
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

这与前一个类似,但不会本地化文件名。

© www.soinside.com 2019 - 2024. All rights reserved.