逃避Swift中的反斜杠

Arm*_*let 8 string escaping swift

我正在将正则表达式作为String值发送到CloudKit,它似乎不喜欢它,替换\\\.但是,一旦我从我的应用程序中获取此值,我想以原始形式重新转换它,\\而不是\.

我不知道如何在Swift中管理这种转义字符,因为我甚至无法\在我的代码中设置一个字符串,但是当从CloudKit获取它们时我仍然可以管理它们.以下是String的示例:

var onlyOneBackslash: String = valueFromCloudKit
print(onlyOneBackslash) // booking\.com
Run Code Online (Sandbox Code Playgroud)

如何逃避反斜杠转换booking\.combooking\\.com

zap*_*aph 8

双反斜杠只存在于您的代码中,它是编译器的约定.它永远不会出现在字符串本身中,只是在Swift代码中.

如果你想在字符串中加一个反斜杠,你需要在代码中有四个反斜杠.或者使用String方法用双反斜杠替换单个反斜杠.

代码示例:

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

输出:

originalString: 1\2  
newString: 1\\2  
Run Code Online (Sandbox Code Playgroud)