String 如何将双引号放入Swift字符串

String 如何将双引号放入Swift字符串,string,swift,String,Swift,我正在写一些代码来处理Swift中带双引号的字符串。以下是我迄今为止所做的工作: func someMethod { let string = "String with \"Double Quotes\"" dealWithString(string) } func dealWithString(input: String) { // I placed a breakpoint here. } 当我运行代码时,断点像往常一样停止在那里,但当我将以下内容输入到调试器时:

我正在写一些代码来处理Swift中带双引号的字符串。以下是我迄今为止所做的工作:

func someMethod {
    let string = "String with \"Double Quotes\""
    dealWithString(string)
}

func dealWithString(input: String) {
    // I placed a breakpoint here.
}
当我运行代码时,断点像往常一样停止在那里,但当我将以下内容输入到调试器时:

print input
这就是我得到的:

(String) $R0 = "String with \"Double Quotes\""

我有一根带反斜杠的绳子。但是如果我试图从源代码中删除反斜杠,它会给我带来编译错误。有解决办法吗?

你做的每件事都是对的。反斜杠用作转义字符,可以精确地按使用方式将双引号插入Swift字符串

问题是调试器。它不打印字符串的实际值,而是将值打印为字符串文字,即用双引号括起来,所有特殊字符都正确转义


如果在代码中使用
print(input)
,您将看到所需的字符串,即转义字符已展开,且周围没有双引号。

较新版本的Swift支持另一种分隔符语法,允许您嵌入特殊字符而无需转义。在开始引号和结束引号之前和之后添加一个或多个
#
符号,如下所示:

extension CustomStringConvertible {
    var inspect: String {
        if self is String {
            return "\"\(self)\""
        } else {
            return self.description
        }
    }
}
let word = "Swift"
let s = "This is \(word.inspect)"
带有“双引号”的字符串# 但是要小心,因为其他常见的转义也需要那些额外的
符号

#“这不是新行:\n”#
#“这是一个新行:\\ n”#

您可以在swift.org上了解更多信息。

是调试器打印字符串的“真实”值。在代码中使用变量
input
时,值将是带“双引号”的
String
,因为调试器就是这样编码和显示字符串的。该值仍然正确,没有斜线。可能重复