2016-10-15 7 views
0

Wie kann ich entfernen, dekodieren, Prozent-Escape-Zeichen aus einer Zeichenfolge mit Swift. Zum Beispiel:Entfernen von Prozent-Escape-Zeichen aus Zeichenfolge

"hello%20there" sollte "hellothere"

EDIT werden:

Ich möchte mehrere Prozent-escaped Zeichen in einer Zeichenfolge ersetzen. Also: "hello%20there%0Dperson" sollte "hellothereperson"

Antwort

5
let string = originalString.replacingOccurrences(of: "%[0-9a-fA-F]{2}", 
               with: "", 
               options: .regularExpression, 
               range: nil) 
1

werden Sie Regex für die passende % gefolgt von zwei Zahlen verwenden können: %[0-9a-fA-F]{2}

let myString = "hello%20there%0D%24person" 
let regex = try! NSRegularExpression(pattern: "%[0-9a-fA-F]{2}", options: []) 
let range = NSMakeRange(0, myString.characters.count) 
let modString = regex.stringByReplacingMatchesInString(myString, 
                 options: [], 
                 range: range, 
                 withTemplate: "") 
print(modString) 
+0

guten Ruf eine regex - leider geht diese nicht _quite_ zu decken, weil es hexadezimalen Zeichen manchmal folgende das '%', nicht nur 0-9. – Gazzini

+0

@Gazzini Got it! Es scheint, dass der Regex-Pfad durch andere Antworten behoben wurde, aber das ist in Ordnung, ich habe meine Regex trotzdem auf den korrekten Wert aktualisiert :) Danke, dass du darauf hingewiesen hast. –

0
let input:String = "hello%20there%0Dperson" 

guard let output = input.stringByRemovingPercentEncoding else{ 
     NSLog("failed to remove percent encoding") 
     return 
    } 

NSLog(output) 

und das Ergebnis ist

hello there 
person 

dann können Sie entfernen Sie einfach die Räume

oder Sie können es entfernen, indem regex

"%([0-9a-fA-F]{2})" 
+0

Danke, aber ich versuche _remove_, nicht die Sonderzeichen zu entschlüsseln. – Gazzini

+0

Leider habe ich beim ersten Mal nicht bemerkt, dass ich meine Antwort aktualisiert habe – Henawey

Verwandte Themen