方法介绍
如果没有耐心看完,可以直接跳到最后获取 String
的 extension
系统为我们提供了三种截取字符串的方式
1、 substring(from: String.Index)
从 from
索引处截取到字符串末尾
let string = "Hello Swift"
let fromIndex = string.index(string.startIndex, offsetBy: 5)
print(string.substring(from: fromIndex)) // 打印 " Swift"
2、 substring(to: String.Index)
从首位截取到 to
的索引位置
let string = "Hello Swift"
let toIndex = string.index(string.startIndex, offsetBy:5)
print(string.substring(to: toIndex)) // 打印 "Hello"
3、 substring(with: Range<String.Index>)
截取 with
的范围内的字符串
let string = "Hello Swift"
let fromIndex = string.index(string.startIndex, offsetBy: 3)
let toIndex = string.index(string.startIndex, offsetBy: 5)
print(string.substring(with: fromIndex..<toIndex))
便于使用的扩展
使用 "Hello Swift"[0..<5]
即可得到 "Hello"
extension String {
// 开区间扩展 ([a..<b])
subscript (range: CountableRange<Int>) -> String? {
// 如果觉得不会出现越界的问题可以去掉这部分,并把返回值改为 String
if range.upperBound > characters.count {
return nil
}
let fromIndex = index(startIndex, offsetBy: range.lowerBound)
let toIndex = index(startIndex, offsetBy: range.upperBound)
return substring(with: fromIndex..<toIndex)
}
// 闭区间扩展([a...b] 如果不需要可以不添加这个扩展)
subscript (range: ClosedRange<Int>) -> String? {
return self[range.lowerBound..<range.upperBound+1]
}
}