Swift:字符串和字符

TL; DR:NSString已替换为String和Character

跳到Swift之后,您会很快发现与Objective-C一起使用的许多常见类型和类都非常不同。 对于任何一种编程语言,所有类型中最重要的一种就是去代表一个字符串。 字符串的基本结构是字符数组。 这些数组只是简单的整数值,并以ASCII字符代码排列。 小写字母将有26个字符,大写字母将有26个字符,空格和标点符号为几个,这就是您所需要的。 ASCII表总共由255个字符组成。 它非常紧凑,只需要7位即可表示所有字符。

最终需要更多的字符。 初始字符集包括非英语字符,以支持某些语言,但不支持所有语言。 在80年代末和90年代初,关于unicode标准的工作开始定义unicode字符表,该表将ASCII的7位字符表示的大小增加到16位。 不再可能用短整数表示字符,并且字符串也必须更改。

最近,现代计算机和移动设备上受支持的字符集已扩展为支持表情符号,更多的表情符号被定义为大型集合的一部分。 当电子邮件和短信成为主流时,人们只是发明了表情符号来传达一种简单的情感或缩写,如LOLLMAO 。 现在很明显,大多数人喜欢将表情符号用于同一目的,而且个性更多。 通常,除非有必要使用字符串深入研究细节,否则我们不必考虑它。

作为一种现代语言,Swift支持unicode和emojis作为该语言的自然组成部分。 离开NSString可能很难适应新的构造。 Swift字符串中的各个字符可以用双向链接的节点列表遍历,而不是简单的数字查找代码数组。 每个节点都与可用于访问字符的索引相关联。 这似乎很复杂。 一个简单的例子可以说明它是如何工作的。

看来,Swift使字符串变得更加复杂,但实际上所做的是包括对以不同方式表示的字符的支持。 下面的要点更详细地显示了String和Character类在Swift中的工作方式有多么大的不同。 对于ASCII字符,它仍然很简单,但是使用表情符号,您会发现单个“字符”实际上是由一系列整数值表示的。 将以下代码放入Swift Playground中,并亲自查看输出。

当您在Playground中试验代码时,您会发现有处理字符串和字符的新技术,它们与NSStringC字符串完全不同。

下一页:无财产