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
与上一个类似,但没有本地化
文件名。
我正在开发 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
与上一个类似,但没有本地化 文件名。