这个东西,我好无感...又搞个字符串索引,不能用整数Int。服了服了
但是,为什么要有这个东西呢?因为Swift的字符串是由多个Unicode标量组合而成的。
我们都知道,苹果的同一个表情符号会有不同的颜色,这些表情符号就是由2个unicode标量组成的,一个是原色的表情符号,另一个是别的其他颜色。
下面举个例子:
为了说明方便,先声明一个字符串
let str = "Hello"
下面开始讲解字符串索引
首先,字符串索引就是索引。索引是什么?是[]里面的东西,他的作用是明确指向具体位置。但是!字符串索引不是整数Int,不要想着在[]里写数字。
那么[]里面能写什么呢?
虽然不能直接写整数,但是,有两个量是确定知道的,那就是边界值。
边界值:
str.starIndex //这是第一个字符的位置
和
str.endIndex //这是最后一个字符之后的位置
和
str.indices //所有有效索引的集合(可遍历)【这个放一块比较,不是边界值】
注意,虽然写的是str.starIndex,str.endIndex和str.indices,但是,他们还是写在[]里面的。
有了两个边界值,就好办多了。如果我们像取中间值,在用一个偏移量就可以了。
偏移量:定位中间字符
以开始的例子为例,
比如从开始位置偏移2个字符,就是用str.starIndex,偏移2个字符offsetBy:2,就可以了
str.index(str.starIndex, offsetBy: 2)
倒数第二个字符怎么获取呢?
变成-2就好了。
str.index(str.endIndex, offsetBy: -2)
这个str.index()看起来有点怪怪的,其实他就是个整数,是写在[]里面的东西
试着print一下这个东西,其实就是个整数+[utf8],比如15[utf8]。
寻找字符索引值:定位字符
str.firstIndex(of: )这个是查找特定字符
比如有这句话:“你好中国,大美吉林”
可以用str.firstIndex(of: "好")这种方法,找到这个字的索引
相邻字符访问(后一个,前一个)
index(after: ), index(before)