如何在""中打印双引号?

134

有人能告诉我怎么以“包含在内”双引号中打印输出吗?

“双引号”


2
https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/StringsAndCharacters.html - ElGavilan
3个回答

302

在要插入字符串的双引号前加上反斜杠:

let sentence = "They said \"It's okay\", didn't they?"

现在的sentence是:

他们说“没关系”,对吧?

这被称为转义字符:您正在使用其字面值,它不会被解释。


使用Swift 4,您可以选择使用"""分隔符来表示无需转义的文字:

let sentence = """
They said "It's okay", didn't they?
Yes, "okay" is what they said.
"""

这将得到:

他们说“没问题”,是吗?
是的,“没问题”就是他们说的。


使用Swift 5,您可以使用增强分隔符:

现在可以使用增强分隔符来表示字符串字面量。在开头引号之前有一个或多个井号(#)的字符串字面量会将反斜杠和双引号字符视为文字,除非它们后面跟着相同数量的井号。使用增强分隔符来避免在包含许多双引号或反斜杠字符的字符串字面量中添加额外的转义。

您的字符串现在可以表示为:

let sentence = #"They said "It's okay", didn't they?"#

如果你想在字符串中添加变量,你需要在反斜杠后面加上#

let sentence = #"My "homepage" is \#(url)"#

30
根据您的需求,您可以使用以下4种模式之一来打印一个包含双引号的Swift String


1. 使用转义双引号

字符串字面量可以包括特殊字符,比如\"

let string = "A string with \"double quotes\" in it."
print(string) //prints: A string with "double quotes" in it.

2. 使用Unicode标量

字符串文本可以包含Unicode标量,书写方式为\u{n}

let string = "A string with \u{22}double quotes\u{22} in it."
print(string) //prints: A string with "double quotes" in it.

3. 使用多行字符串文字(需要Swift 4)

The Swift Programming Language / Strings and Characters中指出:

由于多行字符串文字使用三个双引号而不是一个,因此可以在其中包含双引号("),无需转义它。

let string = """
A string with "double quotes" in it.
"""
print(string) //prints: A string with "double quotes" in it.

4. 使用原始字符串字面量(需要 Swift 5)

The Swift Programming Language / Strings and Characters中提到:

您可以将一个字符串文字放在扩展分隔符中,以在字符串中包含特殊字符而不会调用它们的效果。您必须用引号标记(")将字符串括起来,并用井号标记(#)将其包围。例如,打印字符串字面量#"Line 1\nLine 2"#将打印换行符转义序列(\n),而不是将该字符串打印在两行上。

let string = #"A string with "double quotes" in it."#
print(string) //prints: A string with "double quotes" in it.

26
为了完整起见,以下内容来自苹果文档
字符串字面量可以包含以下特殊字符:
- 转义特殊字符\0(null字符)、\(反斜杠)、\t(水平制表符)、\n(换行符)、\r(回车符)、\"(双引号)和\'(单引号) - 任意Unicode标量,写成\u{n},其中n是一个1-8位十六进制数,其值等于有效的Unicode代码点
这意味着除了能用反斜杠转义字符外,还可以使用Unicode值。以下两个语句是等效的:
let myString = "I love \"unnecessary\" quotation marks"
let myString = "I love \u{22}unnecessary\u{22} quotation marks"

myString现在包含以下内容:

我喜欢“不必要”的引号


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接