Question or problem in the Swift programming language:
I’m sending regular expressions to CloudKit as a String value and it doesn’t seem to like it, replacing \\by \. However, once I’m getting this value from my app I would like to retransform it in its original form, with \\instead of \.
I don’t know how to manage this kind of escaped characters in Swift because I cannot even set a String with a \ in my code but I’m still able to manage them when getting them from CloudKit. Here is an example of String:
var onlyOneBackslash: String = valueFromCloudKit print(onlyOneBackslash) // booking\.com
How to escape the backslash to transform booking\.com into booking\\.com?
How to solve the problem:
Solution 1:
The double backslash exists only in your code, it is a convention of the compiler. It never exists in the string itself, just in the Swift code.
If you want a double backslash in the string you need to have four backslashes in your code. Or use a String method to replace single backslashes with double backslashes.
Code example:
let originalString = "1\\2" print("originalString: \(originalString)") let newString = originalString.stringByReplacingOccurrencesOfString("\\", withString: "\\\\", options: .LiteralSearch, range: nil) print("newString: \(newString)")
Output:
originalString: 1\2 newString: 1\\2
Solution 2:
Swift 5 version
let originalString = "1\\2" print("originalString: \(originalString)") let newString = originalString.replacingOccurrences(of: "\\", with: "\\\\") print("newString: \(newString)") replacingOccurrences(of: "\\", with: "\\\\")
Output:
originalString: 1\2 newString: 1\\2