[swift 进阶]读书笔记-第七章:字符串 C7P1 不再固

2019-01-27  本文已影响3人  liaoworkinn

第七章:字符串(String)

注:下面关于characters的介绍在swift 3.2以后废弃了。String可直接使用characters 的方法。

7.1 不再固定宽度

这一节主要是讲字符串String底层的东西
我们先明白几个知识点:

知识点1:swift中String 是一个结构体 我们主要使用String.Characters, 它是Character的集合,有着类似Array的特性。

知识点2:Unicode拥有可变长度的特性 :原因是不同语言的字符存放字节数不同,若都统一长度,效率太低

字符串的展示Demo
关于é
我们可以用两种Unicode的方式表示字符é

image.png
strA.utf8.elementsEqual(strB.utf8)//false
注: 只比较编码单元的最大好处是:效率高很多

具体的数据比较这里没有做。 不过书上在快很多后面打了个感叹号。那应该的确是快很多。😄

字符蔟(cu四声。。)和标准等价 grapheme cluster and canonically equivalent

知识点3: 字符蔟: Character 中的编码点组合在一起可以组成单个字符蔟(这个就比较偏字符生成的底层了 大概有个印象就行, 以后有需要了可以看看相关文章)

苹果官方Characters and Grapheme Clusters 文档

知识点4:标准等价: 在上面的Demo中。不管是何种方式生成的é,只看两个都是显示为é, 在 Unicode的规范中把这个就叫做“标准等价

知识点5: 做国际化的同学们。OC字符串的比较更推荐用compare方法, isEqual方法用上面的不同生成方法比较就会得到false的结果。

demo如下。

image.png

文章源文件地址,大家如果有更好的想法和观点欢迎交流

上一篇下一篇

猜你喜欢

热点阅读