[swift 进阶]读书笔记-第六章:字符串 C7P2 字符串和集合

第七章:字符串(String)

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

7.2 字符串和集合

这一节主要讲String和数组的联系,一些特性,以及像split、map等高级用法的Demo

String为嘛不是集合的原因:

String如果属于集合的话,会给人一种String的集合方法完全安全且符合Unicode规范的暗示。然鹅,在某些情况下遍历字符串可能会出现错误的结果。
引申:不建议直接给String 添加集合特性的一些协议(第二章中提到的集合协议)。因为这样并不安全。

为嘛String 不支持通过下标操作符Str[i]来替换字符。

这个就和上一节降到的String不固定宽度有关。可能插入的新字符串宽度不相同,这个字符串后面的字符串的位置就要往前或者往后移动。这样是很耗性能的。 所以就算是一个字符串也必须要使用replaceRange

知识点1:避免给String添加像Str[i] 的索引的类扩展, 这样低效,复杂度是O(n的平方)。如果真的想用的话直接用Str.characters[i]就行。 String的集合特性全靠characters属性夯。

字符串与切片

回顾一下:在array上做切片操作返回的不是array,而是arraySlice

我们可以通过自定义split 达到如下的效果:拆分出句子中的单词成一个数组

"hello,world!".split(separators:" !,").map(String.init) //["hello","world"]

其中的split方法为自定义的。swift标准库中并没有。这个就不敲了,主要是知道有这个用法就行。 后期补充的playground会把这些demo都补充起来。如果项目中有对于的需求,到时候再去补充一下对应的知识点也不迟。

猜你喜欢

转载自blog.csdn.net/weixin_33892359/article/details/87116215