Skip to content

Instantly share code, notes, and snippets.

@erica
Last active April 20, 2016 19:56
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 erica/0628234c1214948dc293cb37530f1ec7 to your computer and use it in GitHub Desktop.
Save erica/0628234c1214948dc293cb37530f1ec7 to your computer and use it in GitHub Desktop.
#if os(Linux)
import Glibc
#else
import Darwin
#endif
// Thank you Mike Ash
extension String {
func contains(query: String, caseSensitive: Bool = false) -> Bool {
if query.isEmpty { return true }
let (s, q) = caseSensitive ? (self, query) : (self.lowercaseString, query.lowercaseString)
var chars = s.characters; let qchars = q.characters
while !chars.isEmpty {
if chars.startsWith(qchars) { return true }
chars.removeFirst()
}
return false
}
func prefixedBy(query: String, caseSensitive: Bool = false) -> Bool {
let (s, q) = caseSensitive ? (self, query) : (self.lowercaseString, query.lowercaseString)
return s.characters.startsWith(q.characters)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment