如何使用正则表达式删除swift 3中目录中的某些文件

时间:2017-04-10 09:57:10

标签: ios regex swift

我需要删除文档目录中与模式匹配的所有文件:

myproject-(任何).sqlite-(任何)

现在,我正在逐一做到这一点:

let oldSqlitePath : NSString = documentsDirectory.appendingPathComponent("myproject-\(lastAppVersion!).sqlite") as NSString
let oldSqliteWalPath : NSString = documentsDirectory.appendingPathComponent("myproject-\(lastAppVersion!).sqlite-wal") as NSString
let oldSqliteShmPath : NSString = documentsDirectory.appendingPathComponent("myproject-\(lastAppVersion!).sqlite-shm") as NSString

 do {
    // delete the old SQLite file
    try fileManager.removeItem(atPath: oldSqlitePath as String)
 } catch _ {
 }
 do {
    try fileManager.removeItem(atPath: oldSqliteWalPath as String)
 } catch _ {
 }
 do {
    try fileManager.removeItem(atPath: oldSqliteShmPath as String)
 } catch _ {
 }

我想使用正则表达式。

1 个答案:

答案 0 :(得分:1)

如果您只需要删除4个项目,我认为正则表达式在这里没有意义。我使用这样的东西。

extension URL {

    public var sqliteFileURLs: [URL] {

        let wal: String = "\(path)-wal"
        let journal: String = "\(path)-journal"
        let shm: String = "\(path)-shm"

        let filesNames: [String] = [path, wal, shm, journal]

        return filesNames
            .filter { FileManager.default.fileExists(atPath: $0) }
            .map { (path: String) -> URL in URL(fileURLWithPath: path) }
    }
}

然后你可以path.sqliteFileURLs.map { FileManager.default.removeItem(at: $0 }

如果您真的想使用正则表达式,可以这样:myproject\-.+?\.sqlite\-.+