mono0926
9/28/2016 - 12:35 PM

string.extension.subscript.swift

extension String.CharacterView {
    subscript(sequentialAccess i: Int) -> Character {
        let index = self.index(startIndex, offsetBy: i)
        return self[index]
    }
    subscript(sequentialAccess range: Range<Int>) -> String.CharacterView {
        let start = self.index(startIndex, offsetBy: range.lowerBound)
        let end = self.index(start, offsetBy: range.count)
        return self[start..<end]
    }
    subscript(sequentialAccess range: ClosedRange<Int>) -> String.CharacterView {
        let start = self.index(startIndex, offsetBy: range.lowerBound)
        let end = self.index(start, offsetBy: range.count - 1)
        return self[start...end]
    }
}
let s = "12345"
s.characters[sequentialAccess: 1]
// → 2
String(s.characters[sequentialAccess: 1..<3])
// → 23
String(s.characters[sequentialAccess: 1...3])
// → 234