字符串索引

37 阅读2分钟

这个东西,我好无感...又搞个字符串索引,不能用整数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)