目录的 MacOS 路径格式

MacOS path formatting of the dir

我有以下路径(它们是示例),我希望能够得到下面的结果。

/Users/nameUser
/Users
/Users/nameUser/Downloads/nameDir
/Users/nameUser/Documents/nameDir
/Users/nameUser/Desktop/nameDir/nameProject

结果:

/Users/nameUser
/Users/
~/Downloads/nameDir
~/Documents/nameDir
~/Desktop/nameDir/nameProject

FileManager可以提供主目录路径。因此,您可以检查路径是否以它开头,如果是,则将其替换为波浪号。

func pathWithTilde(_ path: String) -> String {
    let homeDir = FileManager.default.homeDirectoryForCurrentUser.path + "/"
    if path.starts(with: homeDir) {
        return "~/" + path[homeDir.endIndex...]
    }
    return path
}

更新

原来这已经作为 NSString 的方法存在(尽管它也会将 /Users/nameUser 转换为 ~)。一点 String 扩展有助于隐藏 NSString 细节。

extension String {
    var abbreviatingWithTildeInPath: String {
       (self as NSString).abbreviatingWithTildeInPath
    }
}

print("/Users/nameUser/Downloads/nameDir".abbreviatingWithTildeInPath)