swift3 截取字符串

2017-06-17  本文已影响0人  CoderAzreal

方法介绍

如果没有耐心看完,可以直接跳到最后获取 Stringextension

系统为我们提供了三种截取字符串的方式

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]
     }
 }
上一篇下一篇

猜你喜欢

热点阅读