如果标题不清楚,请抱歉。
我的意思是: 如果我有一个变量,我们称之为a,值为" Hello \ nWorld",它将被写为
var a = "Hello\nWorld
如果我要打印它,我就会
Hello
World
我怎么能打印出来:
Hello\nWorld
答案 0 :(得分:4)
这是@Pedro Castilho答案的更完整版本。
import Foundation
extension String {
static let escapeSequences = [
(original: "\0", escaped: "\\0"),
(original: "\\", escaped: "\\\\"),
(original: "\t", escaped: "\\t"),
(original: "\n", escaped: "\\n"),
(original: "\r", escaped: "\\r"),
(original: "\"", escaped: "\\\""),
(original: "\'", escaped: "\\'"),
]
mutating func literalize() {
self = self.literalized()
}
func literalized() -> String {
return String.escapeSequences.reduce(self) { string, seq in
string.replacingOccurrences(of: seq.original, with: seq.escaped)
}
}
}
let a = "Hello\0\\\t\n\r\"\'World"
print("Original: \(a)\r\n\r\n\r\n")
print("Literalized: \(a.literalized())")
答案 1 :(得分:2)
你不能不改变字符串本身。 \n
字符序列仅作为换行符的表示存在于代码中,编译器会将其更改为实际的换行符。
换句话说,这里的问题是" raw" string是具有实际换行符的字符串。
如果您希望它显示为实际\n
,则您需要转义反斜杠。 (将其更改为\\n
)
您还可以使用以下函数自动执行此操作:
func literalize(_ string: String) -> String {
return string.replacingOccurrences(of: "\n", with: "\\n")
.replacingOccurrences(of: "\t", with: "\\t")
}
等等。您可以为要逐字逐句的每个转义序列添加更多replacingOccurrences
次调用。
答案 2 :(得分:2)
如果" Hello \ nWorld"字面意思是你试图打印的字符串,然后你所做的就是:
var str = "Hello\\nWorld"
print(str)
我在Swift Playgrounds测试了这个!
答案 3 :(得分:2)
我知道这有点旧了,但是我正在寻找解决同样问题的方法,我想出了一些简单的事情。
如果您想要打印出显示转义字符的字符串,例如" \ n这件事\ n此事"
打印(myString.debugDescription)
答案 4 :(得分:1)
只需使用双\
var a = "Hello\\nWorld"