给定一个格式的字符串filename.fileextension我想用fileextension替换newextension.我该怎么做?
在java中它会
foo.substring(0, foo.lastIndexOf(".")) + ".newextension"
Run Code Online (Sandbox Code Playgroud)
Rob*_*Rob 11
Swift 4中的字面翻译将是:
let path2 = String(path[..<path.range(of: ".", options: .backwards)!.lowerBound] + ".newextension")
Run Code Online (Sandbox Code Playgroud)
但Apple一直在将我们从String路径转移出去,而是希望我们URL在本地文件系统中使用文件.
例如,假设我们在文档目录中引用了一些文件:
let fileURL = try! FileManager.default
.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: true) // nowadays, you might even prefer `.applicationSupportDirectory
.appendingPathComponent("test.png")
Run Code Online (Sandbox Code Playgroud)
如果你想替换.png用.jpg,你会怎么做:
let jpgURL = fileURL
.deletingPathExtension()
.appendingPathExtension("jpg")
Run Code Online (Sandbox Code Playgroud)
对于以前的Swift版本,请参阅此答案的先前版本.
stringByAppendingPathExtension不再适用于 Swift 2.0(如果您正在使用String)。但它仍然适用于NSString. 所以你可以这样做:
var storePath = (NSSearchPathForDirectoriesInDomains(.DocumentDirectory , .UserDomainMask, true)[0]) as NSString
storePath = storePath.stringByAppendingPathExtension("model.sqlite")!
Run Code Online (Sandbox Code Playgroud)