逃避Swift中的反斜杠

时间:2015-08-20 13:07:51

标签: string swift escaping

我将正则表达式作为字符串值发送到CloudKit并且它似乎不喜欢它,将\\替换为\。但是,一旦我从我的应用中获取此值,我想以原始格式重新转换它,而\\代替\

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

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

如何转义反斜杠以将booking\.com转换为booking\\.com

2 个答案:

答案 0 :(得分:8)

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

如果要在字符串中使用双反斜杠,则需要在代码中使用四个反斜杠。或者使用String方法用双反斜杠替换单个反斜杠。

代码示例:

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

输出:

originalString: 1\2  
newString: 1\\2  

答案 1 :(得分:1)

Swift 5版本

let originalString = "1\\2"
print("originalString: \(originalString)")
let newString = originalString.replacingOccurrences(of: "\\", with: "\\\\")
print("newString: \(newString)")
replacingOccurrences(of: "\\", with: "\\\\")

输出:

originalString: 1\2  
newString: 1\\2