Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@chrisbrandow
Created April 19, 2017 17:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save chrisbrandow/1ab470f017f7dfb5edb966d5d203b88e to your computer and use it in GitHub Desktop.
Save chrisbrandow/1ab470f017f7dfb5edb966d5d203b88e to your computer and use it in GitHub Desktop.
A Few Swift Extensions to make mostly indexing related tasks less painful
extension String {
var length: Int {
return self.characters.count
}
subscript (i: Int) -> String {
return self[Range(i ..< i + 1)]
}
func substring(from: Int) -> String {
return self[Range(min(from, length) ..< length)]
}
func substring(to: Int) -> String {
return self[Range(0 ..< max(0, to))]
}
subscript (r: Range<Int>) -> String {
let range = Range(uncheckedBounds: (lower: max(0, min(length, r.lowerBound)),
upper: min(length, max(0, r.upperBound))))
let start = index(startIndex, offsetBy: range.lowerBound)
let end = index(start, offsetBy: range.upperBound - range.lowerBound)
return self[Range(start ..< end)]
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment