簡體   English   中英

如何快速將字符串轉換為URL

[英]How to convert string to URL in swift

我想將String下面的內容轉換為URL

www.mydomain.com/key=अक्षय

我試着let urlToSend = URL(string: "www.mydomain.com/key=अक्षय")! 但它返回nil。

我從textField獲得了“अक्षय”關鍵字,它可以是任何本地語言。

它適用於英語,但不適用於本地語言。

我用let url = URL(string: "www.mydomain.com")?.appendingPathComponent("key=अक्षय")它給出了www.mydomain.com/key=%E0%A4%85%E0%A4%95% E0%A5%8D%E0%A4%B7%E0%A4%AF

但現在我想www.mydomain.com/key=%E0%A4%85%E0%A4%95%E0%A5%8D%E0%A4%B7%E0%A4%AFwww.mydomain.com/key=अक्षय

在將URL作為字符串使用時,應將它們編碼為URL作為有效的字符串。 編碼URL的最流行的例子之一是“”(空格)將被編碼為“%20”。

因此,在您的情況下,URL的編碼值應為:

www.mydomain.com%2Fkey=%E0%A4%85%E0%A4%95%E0%A5%8D%E0%A4%B7%E0%A4%AF

如您所見, key的值已更改

來自:“अक्षय”

到:“%E0%A4%85%E0%A4%95%E0%A5%8D%E0%A4%B7%E0%A4%AF”

這將使URL有效。

如何:

您可以這樣獲得以上結果:

let string = "www.mydomain.com/key=अक्षय"

if let encodedString  = string.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed), let url = URL(string: encodedString) {
    print(url) // www.mydomain.com%2Fkey=%E0%A4%85%E0%A4%95%E0%A5%8D%E0%A4%B7%E0%A4%AF
}

請注意,為安全起見,編碼字符串和url都有可選的綁定

解碼網址:

您還可以像這樣返回原始的未編碼網址(將其解碼):

let decodedString = "www.mydomain.com%2Fkey=%E0%A4%85%E0%A4%95%E0%A5%8D%E0%A4%B7%E0%A4%AF"

if let unwrappedDecodedString = decodedString.removingPercentEncoding {
    print(unwrappedDecodedString) // www.mydomain.com/key=अक्षय
}

同樣,可選綁定是安全的。

您需要對URL進行編碼。

let urlString = "www.mydomain.com/key=अक्षय".addingPercentEncoding(withAllowedCharacters: .urlPathAllowed)
let url = URL(string: urlString!)

let decodedUrl = urlString?.removingPercentEncoding

請記住,您不應該強行打開URL和字符串,而應使用let或guard語句。

試試這個東西:

    let strURL = "www.mydomain.com/key=अक्षय".addingPercentEncoding(withAllowedCharacters: .urlHostAllowed)
    let url = URL(string: strURL!)

或者您可以使用:

let strURL = "www.mydomain.com/key=अक्षय".addingPercentEncoding(withAllowedCharacters: .urlPathAllowed)
let url = URL(string: strURL!)

除了顯式處理百分比編碼,您還可以使用appendingPathComponent構建URL:

let url = URL(string: "www.mydomain.com")?.appendingPathComponent("key=अक्षय")
// www.mydomain.com/key=%E0%A4%85%E0%A4%95%E0%A5%8D%E0%A4%B7%E0%A4%AF

迅捷3.0

let baseUrl = "www.mydomain.com/key=अक्षय" // base url

let encodedUrl : String! = baseUrl.addingPercentEncoding(withAllowedCharacters: CharacterSet.urlQueryAllowed) // remove the spaces in the url string

let typeUrl = URL(string: encodedUrl)! // convert the string into url

print(typeUrl)  // www.mydomain.com/key=%E0%A4%85%E0%A4%95%E0%A5%8D%E0%A4%B7%E0%A4%AF

用於檢查目的

if let unwrappedDecodedString = encodedUrl.removingPercentEncoding {
        print(decodedString) // www.mydomain.com/key=अक्षय
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM