Swift 笔记:字符串与字符


Apple-Swift-logo

字符串(String)是有序的字符(Character)类型的值的集合。Swift 中 String 和 Character 类型提供了快速和兼容 Unicode 的方式供代码使用。

字符串字面量

字符串字面量是由一对双引号包裹着的具有固定顺序的字符集:

let someStr = "Hello, Swift!"
var someStr2:String = "Hello, Swift!"
var someStr3 = String("Hello, Swift!")

多行字符串字面量是由一对三个双引号包裹着的具有固定顺序的文本字符集:

let quotation = """
This is a multiline string.
This is a multiline string, too.
"""

初始化空字符串

要创建一个空字符串作为初始值,可以将空的字符串字面量赋值给变量:

var emptyStr = ""
var anotherEmptyStr = String()

可以使用 isEmpty 属性来检查字符串是否为空:

if emptyStr.isEmpty {
    print("Nothing to see here")
}

连接字符串和字符

字符串可以使用加法运算符(+)连接,创建一个新的字符串,也可以通过加法赋值运算符(+=)将一个字符串添加到一个已经存在的字符串变量上。

var str1 = "Hello, "
var str2 = "Swift!"

var string = str1 + str2
// string 现在为 Hello, Swift!

str1 += str2
// str1 现在为 Hello, Swift!

可以用 append() 方法将一个字符附加到一个字符串变量的尾部:

let exclamationMark: Character = "!"
string.append(exclamationMark)
// string 现在为 Hello, Swift!!

注意:
不能将一个字符串或者字符添加到一个已经存在的字符变量上,因为字符变量只能包含一个字符。

字符串插值

字符串插值是一种构建新字符串的方式,可以在其中包含常量、变量、字面量和表达式。字符串字面量和多行字符串字面量都可以使用字符串插值。 您插入的字符串字面量的每一项都在以反斜线为前缀的圆括号中。

插值字符串中写在括号中的表达式不能包含非转义反斜杠(\),并且不能包含回车或换行符。不过,插值字符串可以包含其他字面量。

访问和修改字符串

每一个 String 值都有一个关联的索引 index 类型,String.Index,它对应着字符串中的每一个 Character 的位置。

  • startIndex:获取 String 的第一个 Character 的索引
  • endIndex:获取 String 的最后一个 Character 的后一个位置的索引,因此 endIndex 不能作为一个字符串的有效下标
  • index(before:) 或者 index(after:):可以获前面或者后面的一个索引
  • index(_:offsetBy:):获取对应偏移量的索引
  • indices:创建一个包含全部索引的范围(Range),用来在一个字符串中访问单个字符。
  • insert(_:at:):在一个字符串的指定索引插入一个字符
  • insert(contentsOf:at:):在一个字符串的指定索引插入一个段字符串
  • remove(at:):在一个字符串的指定索引删除一个字符
  • removeSubrange(_:):在一个字符串的指定索引删除一个子字符串

比较字符串

Swift 提供了三种方式来比较文本值:字符串字符相等、前缀相等和后缀相等。

  • 字符串/字符可以使用等于操作符(==)或不等于操作符(!=)来判断两个字符串/字符是否相等
  • 通过调用字符串的 hasPrefix(_:) / hasSuffix(_:) 方法来检查字符串是否拥有特定前缀/后缀

#EOF