带有特殊字符的URL字符串问题

Mc.*_*ver 1 iphone url ios swift

我从互联网上下载了一个mp3文件,然后将其保存到文档目录,现在我尝试播放它,但是文件有一些像Space和的字符[],这使得应用程序崩溃,因为它找不到文件.原始文件名是这样的:

Artist - Track [320].mp3
Run Code Online (Sandbox Code Playgroud)

所以URL是:http://sample.com/Artist%20-%20Track%20[320].mp3

但是我的文件下载器url字符串用这个替换了那个标准的url:

http://sample.com/Artist%20-%20Track%20%5D320%5D.mp3
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,[]人物已被替换为%5D!获取url字符串的正确方法是什么?

从UIWebView获取URL:

   func requestIsDownloadable( request: URLRequest) -> Bool
    {
        let requestString : NSString = (request.url?.absoluteString)! as NSString
        let fileExtention : String = requestString.pathExtension.lowercased()

        fileTypes.fileTypeIcons(path: fileExtention as NSString , icon: fileType)
        fileName.text = requestString.lastPathComponent as String

    //******************************//
           fileURL.text = request.url?.absoluteString
//******************************//

        let isDownloadable : Bool = (
            fileExtentions.contains(fileExtention)
        )

        return isDownloadable
    }



 func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool
    {

        if requestIsDownloadable(request: request)
        {
            initializeDownload(download: request)
            return false
        }


        //urlTextField.text = webView.request?.url?.absoluteString

        return true
    }
Run Code Online (Sandbox Code Playgroud)

小智 6

目前还不是很清楚你在哪里遇到问题.但是,如果您需要解码字符串并删除百分比编码,则可以执行以下操作:

let encodedString = "http://sample.com/Artist%20-%20Track%20%5D320%5D.mp3"
let decodedString = encodedString.removingPercentEncoding
Run Code Online (Sandbox Code Playgroud)