【发布时间】:2015-05-11 12:37:19
【问题描述】:
有人可以告诉我如何以“带”双引号的方式打印一些东西。
“双引号”
【问题讨论】:
有人可以告诉我如何以“带”双引号的方式打印一些东西。
“双引号”
【问题讨论】:
在要插入字符串的双引号前加一个反斜杠:
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 中,您可以使用增强的分隔符:
现在可以使用enhanced delimiters 来表达字符串文字。在开始引号之前带有一个或多个数字符号 (#) 的字符串文字将反斜杠和双引号字符视为文字,除非它们后跟相同数量的数字符号。使用增强的分隔符来避免包含许多带有额外转义的双引号或反斜杠字符的字符串文字混乱。
你的字符串现在可以表示为:
let sentence = #"They said "It's okay", didn't they?"#
如果你想在你的字符串中添加变量,你还应该在反斜杠后添加#:
let sentence = #"My "homepage" is \#(url)"#
【讨论】:
为了完整起见,来自Apple docs:
字符串字面量可以包含以下特殊字符:
- 转义的特殊字符\0(空字符)、\(反斜杠)、\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 现在将包含:
我喜欢“不必要的”引号
【讨论】:
根据您的需要,您可以使用以下 4 种模式之一 来打印包含双引号的 Swift String。
字符串字面量可以包含特殊字符,例如\":
let string = "A string with \"double quotes\" in it."
print(string) //prints: A string with "double quotes" in it.
字符串文字可以包含写成\u{n}的Unicode标量值:
let string = "A string with \u{22}double quotes\u{22} in it."
print(string) //prints: A string with "double quotes" in it.
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.
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.
【讨论】: