6.1 字符
字符串的组成单位是字符,那么在Swift中什么能够算是字符,这个问题非常重要。
6.1.1 Unicode编码
Swift是一种现代计算机语言,它采用Unicode编码,它的字符几乎涵盖了我们所知道的一切字符。表示一个字符可以使用字符本身,也可以使用它的Unicode编码,特别是无法通过键盘输入的字符,使用编码还是很方便的。但是编码不是很容易记忆,这也是它的问题。
Unicode编码可以有单字节编码、双字节编码和四字节编码,它们表现形式是\u{n}
,其中n
为1~8个十六进制数。
下面我们看看示例:
在Swift中,字符类型是Character
,与其他类型声明类似,可以指定变量或常量类型为Character
,也可以由编译器自动推断。常量andSign1
和andSign2
保存有&
字符,它的Unicode编码是0026,属于单字节编码,使用\u{26}
表示。常量lamda1
和lamda2
保存有λ字符,它是希腊字母莱姆达,它的Unicode编码是03bb,属于双字节编码,使用\u{03bb}
表示。常量smile1
和smile2
保存有笑脸符号,注意不是图片,它的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} | 反斜线 |
下面我们看看示例:
let specialCharTab1 = "Hello\tWorld."
println("specialCharTab1: \(specialCharTab1)")
let specialCharNewLine = "Hello\nWorld."
println("specialCharNewLine: \(specialCharNewLine)")
let specialCharReturn = "Hello\rWorld."
println("specialCharReturn: \(specialCharReturn)")
let specialCharQuotationMark = "Hello\"World\"."
println("specialCharQuotationMark: \(specialCharQuotationMark)")
let specialCharApostrophe = "Hello\'World\'."
println("specialCharApostrophe: \(specialCharApostrophe)")
let specialCharReverseSolidus = "Hello\\World."
println("specialCharReverseSolidus: \(specialCharReverseSolidus)")
输出结果如下:
specialCharTab1: Hello World.
specialCharNewLine: Hello
World.
specialCharReturn: Hello
World.
specialCharQuotationMark: Hello"World".
specialCharApostrophe: Hello'World'.
specialCharReverseSolidus: Hello\World.
上述代码输出了几种特殊符号。