如何在Swift中打印Escape Sequence字符?

时间:2017-04-19 01:40:20

标签: swift

如果标题不清楚,请抱歉。

我的意思是: 如果我有一个变量,我们称之为a,值为" Hello \ nWorld",它将被写为

var a = "Hello\nWorld

如果我要打印它,我就会

Hello
World 

我怎么能打印出来:

Hello\nWorld

5 个答案:

答案 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"