Skip to content

Instantly share code, notes, and snippets.

@ruan65
Created March 7, 2017 22:35
Show Gist options
  • Save ruan65/9af95b919246fe1592e08ff16e6bfdbb to your computer and use it in GitHub Desktop.
Save ruan65/9af95b919246fe1592e08ff16e6bfdbb to your computer and use it in GitHub Desktop.
swift better work with strings
extension String {
subscript (i: Int) -> String? {
if characters.count > i && i >= 0 {
return String(Array(self.characters)[i])
}
return nil
}
subscript (r: Range<Int>) -> String? {
guard r.lowerBound >= 0 && r.upperBound <= self.characters.count && r.upperBound >= r.lowerBound else { return nil }
let start = self.index(startIndex, offsetBy: r.lowerBound)
let end = self.index(startIndex, offsetBy: r.upperBound)
return self[Range(start ..< end)]
}
func indexAt(int: Int) -> String.Index? {
if characters.count > int {
return index(self.startIndex, offsetBy: int)
}
return nil
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment