Swift 字符与字符串
阐述
字符(Character)类型对应的是一个 Unicode 的扩展字素群。这个字素群可以包含一个或多个 Unicode 码位。
而字符串(String)类型在内部存储中也是一系列 Unicode 码位的序列,它可以看作是多个 Character 的序列。
子字符串 Substring
可以用切片(Swift 范围)来获得一个子串,它是一个 Substring 对象。
Unicode 编码的访问
可以用过 utf8, utf16 以及 unicodeScalars 等属性来访问实际的编码值。
实例
let eAcute: Character = "\u{E9}" // é
let combinedEAcute: Character = "\u{65}\u{301}" // e followed by ́
// eAcute is é, combinedEAcute is é
性质
- 字符串的长度(
.count)是计算字符串中字符的数量,由于要考虑到不同的字素群,所以这种计数是 O(n) 的 - 字符串不能直接用整数来索引,而需要用
String.Index类型。这样类型有几个用法:s.startIndex, s.endIndex获取起始和终止索引s.index(before: xxx)或s.index(after: xxx)根据前一个索引获取新的索引s.index(s.startIndex, offsetBy: 7)可以获取在某一位置之后的索引s.indices方法返回所有的索引
- 字符串的更改:可以用
insert、remove等函数,附加一个合适的at参数
字符串的比较
字符串的相等性是用字素群正则等价来判断的;类似的有前缀和后缀的判断。