如何在Swift中转义macOS文件系统URL?
想象一下我想:如何在Swift中转义macOS文件系统URL?,swift,macos,filesystems,escaping,Swift,Macos,Filesystems,Escaping,想象一下我想: 要求用户以字符串形式输入文件路径(可以是诸如'My'“a/b”文件夹之类的内容,在macOS中它是完全可以接受的文件名。) 根据步骤1中输入的字符串创建一个绝对URL,例如/Users/john/Desktop/'My'“a/b”文件夹 使用该URL在过程中执行一些操作,例如运行/bin/mkdir”/Users/john/Desktop/'My'\'a:b\'folder“* 我不知道如何在Swift中实现这一点。我搜索了URL文档,没有发现任何与macOS文件系统转义有关的内
'My'“a/b”文件夹之类的内容,在macOS中它是完全可以接受的文件名。)
URL
,例如/Users/john/Desktop/'My'“a/b”文件夹
过程中执行一些操作,例如运行/bin/mkdir”/Users/john/Desktop/'My'\'a:b\'folder“
*
URL
文档,没有发现任何与macOS文件系统转义有关的内容。我确信必须有一个规范的方法来实现这一点,而不是一系列充满希望的I-covered-the-edge-cases字符串替换
let pathString=“”
/Users/john/Desktop/'My'“a/b”文件夹
"""
让url=url(fileURLWithPath:pathString)
让urlString=“\”“+url.path+”\“”
var进程=进程()
process.launchPath=“/bin/mkdir”
process.arguments=[urlString]
我希望urlString类似于“/Users/john/Desktop/'My'\'a:b\'folder”
。有了它,我可以创建一个命令,例如:
mkdir "/Users/john/Desktop/\'My\'\ \"a\:b\"\ folder"
mkdir
创建目录这是否有帮助:?为什么不简单地
让urlString=pathString.replacingOccurrences(of:“/”,with:“:”
?斜杠是唯一被“禁止”的字符。@MartinR谢谢你的链接。我的问题有点不同,主要的困难是创建一个路径的字符串表示形式,该路径被转义以适合在命令行工具中使用,在双引号内以确保安全。@vadian您的评论让我更加自信,可以简单地手动转义双引号,并用字符串替换任何正斜杠(在文件名内)。@jeff-h:只有在调用shell时,才需要将参数传递给进程,而不必转义任何引号。这是否有帮助:?为什么不简单地让urlString=pathString.replacingOccurrences(of:/,with::”
?斜杠是唯一“禁止的”字符。@MartinR感谢您的链接。我的问题有点不同,主要的困难是创建一个路径的字符串表示形式,它被转义以适合在命令行工具中使用,在双引号内以确保安全。@vadian您的评论让我更自信地手动转义双引号和string-r替换任何正斜杠(在文件名内)。@jeff-h:当您将参数传递给进程时,您不必转义任何引号,仅当您调用shell时。