2015-08-20 44 views
5

Sto inviando espressioni regolari a CloudKit come valore di stringa e sembra non piacergli, sostituendo \\ per \. Tuttavia, una volta ottenuto questo valore dalla mia app, mi piacerebbe ritrasmetterlo nella sua forma originale, con \\ anziché \.Barra rovesciata di escape in Swift

Non so come gestire questo tipo di caratteri di escape in Swift perché non riesco nemmeno a impostare una stringa con un \ nel mio codice, ma sono ancora in grado di gestirli quando li ottengo da CloudKit. Ecco un esempio di stringa:

var onlyOneBackslash: String = valueFromCloudKit 
print(onlyOneBackslash) // booking\.com 

Come sfuggire il backslash per trasformare booking\.com in booking\\.com?

risposta

6

Il doppio backslash esiste solo nel codice, è una convenzione del compilatore. Non esiste mai nella stringa stessa, solo nel codice Swift.

Se si desidera una doppia barra rovesciata nella stringa, è necessario disporre di quattro barre rovesciate nel codice. In alternativa, utilizzare un metodo String per sostituire singoli backslash con doppi backslash.

Codice esempio:

let originalString = "1\\2" 
print("originalString: \(originalString)") 
let newString = originalString.stringByReplacingOccurrencesOfString("\\", withString: "\\\\", options: .LiteralSearch, range: nil) 
print("newString: \(newString)") 

uscita:

originalString: 1\2 
newString: 1\\2 
+0

Cosa fare se si desidera che il "1 \ 2" valore a una variabile stringa? –

+0

Se è necessario includere un "\" in una stringa, basta sfilarlo "\\". Vedere [Stringhe e caratteri] (https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/StringsAndCharacters.html#//apple_ref/doc/uid/TP40014097-CH7-ID285) e scorri fino a * Caratteri speciali in string letterali *. – zaph

+1

Grazie per la risposta Zaph, in realtà il problema è che volevo inviare "\/Date (1310669017000) \ /" come parametro per qualche servizio web se fuggivo con \\ invierà quel parametro come "\\/Data (1310669017000) \\/"non" \/Data (1310669017000) \/". I thing escape funziona solo con print(). –

Problemi correlati