在Swift中创建和初始化字符串

初始化空串

  • 字面量
  • 初始化器语法
  • isEmpty检查是否为空串

字符串字面量

  • 字符串字面量是被双引号(")包裹的固定顺序文本字符
  • Swift 会为 someString常量推断类型为 String,因为你用了字符串字面量值来初始化
let someString = "Some string literal value"

多行字符串字面量

  • 多行字符串字面量是用三个双引号引起来的一系列字符
  • 多行字符串字面量把所有行包括在引号内,开始和结束默认不会有换行符
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 beginning," 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其它行前应该有多少空白是需要忽略的。比如说,尽管下面函数中多行字符串字面量缩进了,但实际上字符串不会以任何空白开头。
func generateQuotation() -> String {
    let quotation = """
        The White Rabbit put on his spectacles.  "Where shall I begin,
        please your Majesty?" he asked.
 
        "Begin at the beginning," the King said gravely, "and go on
        till you come to the end; then stop."
        """
    return quotation
}
print(quotation == generateQuotation())
// Prints "true"
  • 总而言之,如果你在某行的空格超过了结束的双引号("""),那么这些空格会被包含

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

  • 转义特殊字符 \0 (空字符), \ (反斜杠), \t (水平制表符), \n (换行符), \r(回车符), " (双引号) 以及 ' (单引号);
  • 任意的 Unicode 标量,写作 \u{n},里边的 n是一个 1-8 个与合法 Unicode 码位相等的16进制数字
  • 由于多行字符串字面量使用三个双引号而不是一个作为标记,你可以在多行字符串字面量中包含双引号( " )而不需转义。要在多行字符串中包含文本 """ ,转义至少一个双引号。比如说:
let threeDoubleQuotationMarks = """
Escaping the first quotation mark \"""
Escaping all three quotation marks \"\"\"
"""

扩展字符串分隔符

  • 你可以在字符串字面量中放置扩展分隔符来在字符串中包含特殊字符而不让他们真的生效。通过把字符串放在双引号(")内并由井号(#)包裹。
  • 如果你需要字符串中某个特殊符号的效果,使用匹配你包裹的井号数量的井号并在前面写转义符号\。

你可能感兴趣的:(在Swift中创建和初始化字符串)