source

URL을 문자열로 변환하고 다시 되돌리기

ittop 2023. 4. 12. 22:59
반응형

URL을 문자열로 변환하고 다시 되돌리기

그래서 내가 개종했어NSURL에 대해서String그래서 만약에 내가println인 것 같다file:///Users/...기타.

나중에 이걸 돌려받고 싶어요NSURL그래서 아래와 같이 다시 변환하려고 합니다만, 위의 문자열 버전에 나타난 슬래시 중 2개를 잃었습니다.그 결과, 이 슬래시는 코드로서 파괴됩니다.url무효입니다.

왜 내 전환이 로 되돌아왔을까?NSURL에서 2개의 전방 슬래시 제거String이 정보를 제공하는데, 어떻게 하면 이 정보를NSURL세 개의 슬래시가 들어있나요?

var urlstring: String = recordingsDictionaryArray[selectedRow]["path"] as String
println("the url string = \(urlstring)")
// looks like file:///Users/........etc
var url = NSURL.fileURLWithPath(urlstring)
println("the url = \(url!)")
// looks like file:/Users/......etc

Swift 5, Swift 4 및 Swift 3에서 문자열을 URL로 변환하려면:

URL(string: String)

또는,

URL.init(string: "yourURLString")

URL을 문자열로 변환하려면:

URL.absoluteString

아래 항목은 URL의 '콘텐츠'를 문자열로 변환합니다.

String(contentsOf: URL)

fileURLWithPath()는 플레인 파일 경로(예: "/path/to/file")를 URL로 변환하는 데 사용됩니다.urlString스킴을 포함한 완전한 URL 스트링이기 때문에

let url = NSURL(string: urlstring)

환산하다NSURL. 예:

let urlstring = "file:///Users/Me/Desktop/Doc.txt"
let url = NSURL(string: urlstring)
println("the url = \(url!)")
// the url = file:///Users/Me/Desktop/Doc.txt

Swift의 NSURL에서 경로의 문자열 버전을 가져오는 더 좋은 방법이 있습니다.

let path:String = url.path

2021 | SWIFT 5.1:

로컬 경로의 경우

String --> URL :

let url1 = URL(fileURLWithPath: "//Users/Me/Desktop/Doc.txt")
let url2 = URL(fileURLWithPath: "//Users/Me/Desktop", isDirectory: true)

// !!!!!NEVER DO THIS!!!!!!
let url3 = URL(string: "file:///Users/Me/Desktop/Doc.txt")!
// !!!!!NEVER DO THIS!!!!!!

URL --> 문자열:

let a = String(describing: url1)  // "file:////Users/Me/Desktop/Doc.txt"
let b = "\(url1)"                 // "file:////Users/Me/Desktop/Doc.txt"
let c = url1.absoluteString       // "file:////Users/Me/Desktop/Doc.txt"

// Best solution in most cases
let d = url1.path                 // "/Users/Me/Desktop/Doc.txt"

인터넷 URL의 경우

String --> URL :

let url = URL(string: "https://stackoverflow.com/questions/27062454/converting-url-to-string-and-back-again")!

URL --> 문자열:

url.absoluteString // https://stackoverflow.com/questions/27062454/converting-url-to-string-and-back-again

url.path           // /questions/27062454/converting-url-to-string-and-back-again

주의: URL에 주의하세요.optional그리고 그럴 수 있다nil따옴표로 URL을 감싸 문자열로 변환할 수 있습니다.운동장에서 시험해 볼 수 있어요.
Swift 5, Xcode 11 업데이트:

import Foundation

let urlString = "http://ifconfig.me"
// string to url
let url = URL(string: urlString)
//url to string
let string = "\(url)"
// if you want the path without `file` schema
// let string = url.path
let url = URL(string: "URLSTRING HERE")
let anyvar =  String(describing: url)

Swift 3(NSURL은 잊습니다).

let fileName = "20-01-2017 22:47"
let folderString = "file:///var/mobile/someLongPath"

문자열에서 URL을 작성하려면:

let folder: URL? = Foundation.URL(string: folderString)
// Optional<URL>
//  ▿ some : file:///var/mobile/someLongPath

파일명을 추가할 경우.appending Path Component()는 다음과 같이 퍼센트 인코딩을 자동으로 추가합니다.

let folderWithFilename: URL? = folder?.appendingPathComponent(fileName)
// Optional<URL>
//  ▿ some : file:///var/mobile/someLongPath/20-01-2017%2022:47

루트 부분이 없는 String을 사용하는 경우(퍼센트 인코딩이 자동으로 삭제된다는 점에 유의하십시오).

let folderWithFilename: String? = folderWithFilename.path
// ▿ Optional<String>
//  - some : "/var/mobile/someLongPath/20-01-2017 22:47"

루트 부분을 유지하는 경우는, 다음의 조작을 실시합니다(단, 퍼센티지 부호화에 주의해 주세요).- 삭제되지 않습니다.

let folderWithFilenameAbsoluteString: String? = folderWithFilenameURL.absoluteString
// ▿ Optional<String>
//  - some : "file:///var/mobile/someLongPath/20-01-2017%2022:47"

문자열의 퍼센트 부호화를 수동으로 추가하려면:

let folderWithFilenameAndEncoding: String? = folderWithFilename.addingPercentEncoding(withAllowedCharacters: CharacterSet.urlQueryAllowed)
// ▿ Optional<String>
//  - some : "/var/mobile/someLongPath/20-01-2017%2022:47"

퍼센트 인코딩을 삭제하려면:

let folderWithFilenameAbsoluteStringNoEncodig: String? = folderWithFilenameAbsoluteString.removingPercentEncoding
// ▿ Optional<String>
//  - some : "file:///var/mobile/someLongPath/20-01-2017 22:47"

비율 인코딩은 네트워크 요청에 대한 URL이 필요하지만 파일 시스템에 대한 URL이 항상 작동하는 것은 아닙니다. 비율 인코딩은 네트워크 요청을 사용하는 실제 방법에 따라 달라집니다.여기서 주의할 점은 이러한 변환은 자동으로 삭제 또는 추가될 수 있으므로 신중하게 디버깅하는 것이 좋습니다.

Swift 3 버전 코드:

let urlString = "file:///Users/Documents/Book/Note.txt"
let pathURL = URL(string: urlString)!
print("the url = " + pathURL.path)

스위프트 5

변환하려면String에 대해서URL:

let stringToURL = URL(string: "your-string")

변환하려면URL에 대해서String:

let urlToString = stringToURL?.absoluteString

UI WebViewDelegate에서 사용되는 Swift 3은 StartLoad With와 함께 사용되어야 합니다.

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

    let urlPath: String = (request.url?.absoluteString)!
    print(urlPath)
    if urlPath.characters.last == "#" {
        return false
    }else{
        return true
    }

}

언급URL : https://stackoverflow.com/questions/27062454/converting-url-to-string-and-back-again

반응형