Skip to content

Instantly share code, notes, and snippets.

@lucasfernandes
Last active March 5, 2021 18:27
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 lucasfernandes/adc85de7981043a1d934d5f14e6e65f6 to your computer and use it in GitHub Desktop.
Save lucasfernandes/adc85de7981043a1d934d5f14e6e65f6 to your computer and use it in GitHub Desktop.
String Extensions
extension CharacterSet {
static let vowels = CharacterSet(charactersIn: "aeiou")
static let consonants = CharacterSet.letters.subtracting(vowels)
}
extension String {
var specialChars: String {
self
.components(separatedBy: .punctuationCharacters)
.joined()
}
var vowels: String {
self
.components(separatedBy: .consonants)
.joined()
.filter { $0 != " " }
}
var consonants: String {
self
.components(separatedBy: CharacterSet.vowels)
.joined()
.filter { $0 != " " }
}
// "aaaacciiiiffffpppp".lettersCount
// => "p4i4c2f4a4"
var lettersCount: String {
return self
.reduce(into: [:]) { (counts, letter) in counts[letter.description, default: 0] += 1 }
.map { "\($0.key)\($0.value)" }
.joined()
}
}
let someString = "first.last.name@email.com"
print(someString.consonants)
// => frst.lst.nm@ml.cm
print(someString.vowels)
// => i.a.ae@eai.o
print(someString.specialChars.consonants)
// => frstlstnmmlcm
print(someString.specialChars.vowels)
// => iaaeeaio
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment