Swift5.1—字符串字面量

简介: Swift5.1—字符串字面量
let someString = "Some string literal value"


Swift之所以推断someString常量为字符串类型,是因为它使用了字面量方式进行初始化。


多行字符串字面量


如果你需要一个字符串是跨越多行的,那就使用多行字符串字面量—由一对三个双引号包裹着的具有固定顺序的文本字符集。


let quotation = """
The White Rabbit put on his spectacles.
"Begin at the beginning," the King said gravely, "and go on
till you come to the end; then stop."
"""


一个多行字符串字面量包含了所有的在开启和关闭引号(""")中的行。这个字符从开启引号(""")之后的第一行开始,到关闭引号(""")之前为止。之后的第一行开始,到关闭引号(""")之前为止。这就意味着字符串开启引号之后(""")或者结束引号(""")之前都没有换行符号。


下面两个字符串其实是一样的,虽然第二个使用了多行字符串的形式。


let singleLineString  =  "These are the same."
let multilineString  =  """
These are the same.
"""


如果你的代码中,多行字符串包含换行符的话,则多行字符串字面量中也会包含换行符。如果你想换行,以便加强代码的可读性,但是你又不想在你的多行字符串字面量中出现换行符的话,你可以用在行尾写一个反斜杠(\)作为续行符。


let softWrappedQuotation = """
The White Rabbit put on his spectacles. "Where shall I begin,\
please your Majesty?" he asked.
"Begin at the beginnig," the King said gravely, "and go on \
till you come to the end; then stop."


为了让一个多行字符串字面量开始和结束于换行符,请将换行写在第一行和最后一行。


let lineBreaks = """
This string starts with a line break.
It also ends with a line break.
"""


一个多行字符串字面量能够缩进来匹配周围的代码。关闭引号(""")之前的空白字符串告诉Swift编译器其它各行多少空白字符串需要忽略。然而,如果你在某行的前面写的空白字符串超出了关闭引号(""")之前的空白字符串,则超出部分将被包含在多行字符串字面量中。


2466108-c12f1b711f2b828d.webp.jpg


在上面的例子中,尽管整个多行字符串字面量都是缩进的(源代码缩进),第一行和最后一行没有以空白字符串开始(实际的变量值)。中间一行的缩进用空白字符串(源代码缩进)比关闭引号(""")之前的空白字符串多,所以,它的行首将有4个空格。


字符串字面量的特殊字符串


字符串字面量可以包含以下特殊字符:


  • 转义字符\0(空字符)、\\(反斜线)、\t(水平制表符,键盘上的tab键,输出四个空格)、\n(换行符)、\r(回车符)、\"(双引号)、\'(单引号)。
  • Unicode标量,写成\u{n}(u为小写),其中n为任意一到八位十六进制数且可用的Unicode位码。


下面的代码为各种特殊字符的使用示例。wiseWords常量包含了两个双引号。


dollarSign、blackHeart和sparklingHeart常量演示了三种不同格式的Unicode标量。


let wiseWords = "\"Imagination is more important than knowledge\" - Einstein"
// "Imagination is more important than knowledge" - Einstein
let dollarSign = "\u{24}"
//$,Unicode标量U+0024
let blackHeart = "\u{2665}"
//♥,Unicode标量U+2665
let sparklingHeart = "\u{1F496}"
//💖,Unicode标量U+1F496


由于多行字符串字面量使用了三个双引号,而不是一个,所以你可以在多行字符串字面量里直接使用双引号(")而不必加上转义符(\)。要在多行字符串字面量中使用"""的话,就需要使用至少一个转义符(\)。


let threeDoubleQuotes = """
Escaping the first quote \"""
Escaping all three quotes \"\"\"
"""


扩展字符串分隔符


您可以将字符串文字放在扩展分隔符中,这样字符串中的特殊字符将会被直接包含而非转义后的效果。将字符串放在引号(")中并用数字符号(#)括起来。例如,打印字符串文字#"Line 1 \nLine 2"#会打印换行符转义序列(\n)而不是给文字换行。


如果需要字符串文字中的字符的特殊效果,请匹配转义字符(\)后面添加与起始位置个数相匹配的#符。例如,如果您的字符串是#"Line 1 \nLine 2"#并且您想要换行,则可以使用#"Line 1 #nLine 2"#来代替。同样,###"Line1 ###nLine2"###也可以实现换行效果。


扩展分隔符创建的字符串文字也可以是多行字符串文字。您可以使用扩展分隔符在多行字符串中包含文""",覆盖原有的结束文字的默认行为。


let threeMoreDoubleQuotationMarks = #""" 
Here are three more double quotes:"""
"""#


目录
相关文章
|
9月前
|
编译器 Swift iOS开发
10 Swift中的字符串
Swift中的字符串
55 0
|
Java Swift iOS开发
Swift - 字符串
Swift - 字符串
92 0
|
Swift 索引
Swift实用小册03:字符串的使用
Swift实用小册03:字符串的使用
199 0
Swift实用小册03:字符串的使用
|
存储 Swift
Swift5.1—字符串的Unicode表示形式
Swift5.1—字符串的Unicode表示形式
398 0
Swift5.1—字符串的Unicode表示形式
|
存储 Swift
Swift5.1—子字符串
Swift5.1—子字符串
317 0
Swift5.1—子字符串
|
Swift
swift微博第2天(命名空间和控制器字符串)
swift微博第2天(命名空间和控制器字符串)
122 0
swift微博第2天(命名空间和控制器字符串)
【Swift4】(2) 运算符 | 字符串
【Swift4】(2) 运算符 | 字符串
109 0
Swift5.1—字符串前缀/后缀相等
Swift5.1—字符串前缀/后缀相等
244 0
|
Swift
Swift5.1—比较字符串
Swift5.1—比较字符串
600 0
|
Swift 索引
Swift5.1—访问和修改字符串
Swift5.1—访问和修改字符串
243 0