Skip to content

Instantly share code, notes, and snippets.

@Pasanpr
Created February 16, 2017 17:31
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save Pasanpr/26e6e6227e62b7330a09a825c02a612f to your computer and use it in GitHub Desktop.
Save Pasanpr/26e6e6227e62b7330a09a825c02a612f to your computer and use it in GitHub Desktop.
Determine if a character is a vowel or not
extension Character {
var isVowel: Bool {
let vowels: [Character] = ["a", "e", "i", "o", "u"]
return vowels.contains(self)
}
}
@imdanielsp
Copy link

imdanielsp commented Mar 12, 2017

This is pretty nice. My solution was:

func removeVowels(from value: String) -> String {
  var output = ""
  
  for char in value.characters {
    if !(char == "a" || char == "A" || char == "e" || char == "e"
      || char == "i" || char == "I" || char == "o" || char == "O"
      || char == "u" || char == "U") {
      output.append(char)
    }
  }
  return output
}

But this was pretty cool.

@tjbarber
Copy link

This is mine:

func removeVowels(from string: String) -> String {
    var newString = ""
    for character in string.characters {
        if ["a","e","i","o","u"].contains(character) {
            continue
        }
        
        newString.append(character)
    }
    
    return newString
}

@ivnxyz
Copy link

ivnxyz commented May 26, 2017

This is my solution:

func removeVowels(from value: String) -> String {
    let vowels: [Character] = ["a", "e", "i", "o", "u"]
    var newString: String = ""
    
    for character in value.characters {
        if !vowels.contains(character) {
            newString.append(character)
        }
    }
    
    return newString
}

@iamGus
Copy link

iamGus commented Jul 17, 2017

Here is mine using switch statement just to show another way, no way as elegant as the original but seemed to work fine!

func removeVowels(from: String) -> String {
    var newString = ""
        for each in from.characters {
        switch each {
        case "a", "e", "i", "o", "u": break
        default: newString.append(each)
        }
    
    }
    return newString
}

@KarolAltamirano
Copy link

KarolAltamirano commented Aug 27, 2017

Sharing also my solution:

func removeVowels(from value: String) -> String {
    return String(value.characters.filter { !["a", "e", "i", "o", "u"].contains($0) })
}

@durul
Copy link

durul commented Sep 8, 2017

Sharing my solution:

func removeCharacters(_ charactersToRemove : [Character], myString : String) -> String {
    let results = String(myString.characters.filter{!charactersToRemove.contains($0)})
    return results
}

removeCharacters(["a", "e", "i", "o", "u"], myString: "Guardians of the Galaxy Vol. 2")

@syntakks
Copy link

syntakks commented Jun 12, 2018

I added the uppercased versions to the Character Extension, as well as an isConsonant that just piggy backs off of isVowel so you don't have to loop through all the other characters.

extension Character {
    var isVowel: Bool {
        let vowels: [Character] = ["a", "e", "i", "o", "u", "A", "E", "I", "O", "U"]
        return vowels.contains(self)
    }
    var isConsonant: Bool {
        return !self.isVowel
    }
}

func removeVowels(from string: String) -> String {
    var result: String = ""
    for character: Character in string.characters {
        if character.isConsonant {
            result.append(character)
        }
    }
    return result
}

@byaruhaf
Copy link

byaruhaf commented Mar 8, 2019

'characters' is deprecated in the newer versions of swift thus removeVowels function should:

func removeVowels(from value: String) -> String {
  return String(value.filter { !["a", "e", "i", "o", "u"].contains($0) })
}

@tjhv
Copy link

tjhv commented Jul 4, 2019

extension Character
{
    var isVowel: Bool {
        return "aeiou".contains(self)
    }
}

func removeVowels(from: String) -> String
{
    return from.filter { !$0.isVowel }
}

@marsdev26
Copy link

func removeVowels(from mystring: String) -> String {
    let vowels:[Character] = ["a","e","i","o","u","y"]
    var output = ""
    for a in mystring {
        if vowels.contains(a) != true {
            output += String(a)
        }
    }
    return output
 }

@IsaacRichardson
Copy link

func removeVowels(from value: String) -> String {
    var vowels: [Character] = ["a", "e", "i", "o", "u"]
    
    var newValue = value.lowercased()
    
    newValue.removeAll(where: { vowels.contains($0) })

    return newValue
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment