avatar

Swift中的字符串下标

引子

前几天在项目中需要截取字符串,却发现普适的语法在Swift里不适用

image-20200517002513483

看到提示说明我们需要使用String.Index的类型的变量

去文档里看看下标可以接收单个Index.....<三种

image-20200517003907575

果然是可以的

那么我们可以扩充下标方法来让我们更舒服的访问字符串,我这里返回值为可选性,以便不会越界

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
extension String {

subscript (i: Int) -> Character? {
guard i < self.count else {
return nil
}
return self[self.index(self.startIndex, offsetBy: i)]
}

subscript (r: Range<Int>) -> String? {
guard (r.lowerBound >= 0 && r.upperBound <= self.count) else { return nil }
let start = index(startIndex, offsetBy: r.lowerBound)
let end = index(startIndex, offsetBy: r.upperBound)
return String(self[start..<end])
}

subscript (r: ClosedRange<Int>) -> String? {
guard (r.lowerBound >= 0 && r.upperBound < self.count) else { return nil }
let start = index(startIndex, offsetBy: r.lowerBound)
let end = index(startIndex, offsetBy: r.upperBound)
return String(self[start...end])
}

}

之后就可以愉快地使用下标了

image-20200517122831148

文章作者: X Mεl0n
文章链接: http://www.zrzz.site/2020/05/13/Swift%E4%B8%AD%E7%9A%84%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%8B%E6%A0%87/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 X Mεl0n | 随手记

评论