6.1 字符

字符串的组成单位是字符,那么在Swift中什么能够算是字符,这个问题非常重要。

6.1.1 Unicode编码

Swift是一种现代计算机语言,它采用Unicode编码,它的字符几乎涵盖了我们所知道的一切字符。表示一个字符可以使用字符本身,也可以使用它的Unicode编码,特别是无法通过键盘输入的字符,使用编码还是很方便的。但是编码不是很容易记忆,这也是它的问题。

Unicode编码可以有单字节编码、双字节编码和四字节编码,它们表现形式是\u{n},其中n为1~8个十六进制数。

下面我们看看示例:

{%}

在Swift中,字符类型是Character,与其他类型声明类似,可以指定变量或常量类型为Character,也可以由编译器自动推断。常量andSign1andSign2保存有&字符,它的Unicode编码是0026,属于单字节编码,使用\u{26}表示。常量lamda1lamda2保存有λ字符,它是希腊字母莱姆达,它的Unicode编码是03bb,属于双字节编码,使用\u{03bb}表示。常量smile1smile2保存有笑脸符号,注意不是图片,它的Unicode编码是0001f603,属于双字节编码,使用\u{0001f603}表示。这些编码实在是难以记住,我们可以在http://vazor.com/unicode/网站查询字符与编码的对应关系。

提示 在C和Objective-C等语言中,字符是放在单引号(')之间的,然而在Swift语言中,不能使用单引号的方式,必须使用双引号(")把字符括起来。

6.1.2 转义符

在Swift中,为了表示一些特殊字符,会使用“\”,这称为字符转义。常见的转义符的含义参见表6-1。

表6-1 转义符

字符表示 Unicode编码 说明
\t \u{0009} 水平制表符tab
\n \u{000a} 换行
\r \u{000d} 回车
\" \u{0022} 双引号
\' \u{0027} 单引号
\ \u{005c} 反斜线

下面我们看看示例:

  1. let specialCharTab1 = "Hello\tWorld."
  2. println("specialCharTab1: \(specialCharTab1)")
  3. let specialCharNewLine = "Hello\nWorld."
  4. println("specialCharNewLine: \(specialCharNewLine)")
  5. let specialCharReturn = "Hello\rWorld."
  6. println("specialCharReturn: \(specialCharReturn)")
  7. let specialCharQuotationMark = "Hello\"World\"."
  8. println("specialCharQuotationMark: \(specialCharQuotationMark)")
  9. let specialCharApostrophe = "Hello\'World\'."
  10. println("specialCharApostrophe: \(specialCharApostrophe)")
  11. let specialCharReverseSolidus = "Hello\\World."
  12. println("specialCharReverseSolidus: \(specialCharReverseSolidus)")

输出结果如下:

  1. specialCharTab1: Hello World.
  2. specialCharNewLine: Hello
  3. World.
  4. specialCharReturn: Hello
  5. World.
  6. specialCharQuotationMark: Hello"World".
  7. specialCharApostrophe: Hello'World'.
  8. specialCharReverseSolidus: Hello\World.

上述代码输出了几种特殊符号。