2017-01-17 3 views
0

ich den + Charakter in meiner URL-Zeichenfolge kodieren will, habe ich versucht, dass diese Art und Weise zu tun:Wie zu codieren "+" Zeichen in URL-String?

let urlString = "www.google.com?type=c++" 

let result = string.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) 

aber dies wird für + nicht.

eine Idee? Vielen Dank.

Update:

Was ist der type= Parameter in der URL dynamisch ist, würde ich nicht etwas implicite Ersatz tun auf dem + Charakter. Dieser Parameter type= repräsentiert einen UITextField-Wert, so dass alles eingegeben werden kann. Ich bin auch neugierig, warum addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) in diesem speziellen Fall nicht funktioniert?

+0

Können Sie ** urlString.replaceOccourences (von: "+", mit: "") **? –

+0

Bitte überprüfen Sie [diese] (http://stackoverflow.com/a/41568692/6541007). – OOPer

+0

Bitte lesen Sie das Update. Ich werde keinen Ersatz von Zeichen in diesem Fall tun – Robert

Antwort

4
let allowedCharacterSet = CharacterSet(charactersIn: "!*'();:@&=+$,/?%#[] ").inverted 

if let escapedString = "www.google.com?type=c++".addingPercentEncoding(withAllowedCharacters: allowedCharacterSet) { 
    print(escapedString) 
} 

Ausgang:

www.google.com% 3Ftype% 3Dc% 2B% 2B

+0

Ja, Ihr Ansatz ist gut genug (nicht ideal), aber ich bin neugierig, warum 'addingPercentEncoding (withAllowedCharacters: .urlQueryAllowed)' wird nicht funktionieren ... – Robert

+0

Das ist etwas, was ich nicht beantworten kann, wahrscheinlich haben sie das '+' aus gutem Grund nicht hinzugefügt. –

2

Ersetzen + mit% 2B

let urlString = "www.google.com?type=c++" 
let newUrlString = aString.replacingOccurrences(of: "+", with: "%2B") 
+0

siehe bitte * update * der Beschreibung. – Robert

+0

Ihr Ansatz ist das letzte, was ich damit machen möchte – Robert

Verwandte Themen