mono0926
9/28/2016 - 12:35 PM

string.extension.method.swift

extension String.CharacterView {
    func read(_ i: Int) -> Character {
        let index = self.index(startIndex, offsetBy: i)
        return self[index]
    }
    func read(_ 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]
    }
    func read(_ 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.read(1)
// → 2
String(s.characters.read(1..<3))
// → 23
String(s.characters.read(1...3))
// → 234