Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Swift中转义macOS文件系统URL?_Swift_Macos_Filesystems_Escaping - Fatal编程技术网

如何在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中它是完全可以接受的文件名。)
  • 根据步骤1中输入的字符串创建一个绝对
    URL
    ,例如
    /Users/john/Desktop/'My'“a/b”文件夹
  • 使用该URL在
    过程中执行一些操作,例如运行
    /bin/mkdir”/Users/john/Desktop/'My'\'a:b\'folder“
    *
  • 我不知道如何在Swift中实现这一点。我搜索了
    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"
    
  • 这是一个说明问题的假设例子。当然,我实际上并没有试图从Swift:)中使用
    mkdir
    创建目录

  • 这是否有帮助:?为什么不简单地
    让urlString=pathString.replacingOccurrences(of:“/”,with:“:”
    ?斜杠是唯一被“禁止”的字符。@MartinR谢谢你的链接。我的问题有点不同,主要的困难是创建一个路径的字符串表示形式,该路径被转义以适合在命令行工具中使用,在双引号内以确保安全。@vadian您的评论让我更加自信,可以简单地手动转义双引号,并用字符串替换任何正斜杠(在文件名内)。@jeff-h:只有在调用shell时,才需要将参数传递给进程,而不必转义任何引号。这是否有帮助:?为什么不简单地
    让urlString=pathString.replacingOccurrences(of:/,with::”
    ?斜杠是唯一“禁止的”字符。@MartinR感谢您的链接。我的问题有点不同,主要的困难是创建一个路径的字符串表示形式,它被转义以适合在命令行工具中使用,在双引号内以确保安全。@vadian您的评论让我更自信地手动转义双引号和string-r替换任何正斜杠(在文件名内)。@jeff-h:当您将参数传递给进程时,您不必转义任何引号,仅当您调用shell时。