2017-08-13 16 views
1

私は、与えられた文から母音を削除するメソッドを作成しようとしています。私は「removeVowels」という関数を作成しました。しかし、ある文の後にその関数を呼び出そうとすると、 "String型の値に 'removeVowels'というメンバがないというエラーが発生します。'String'型の値に 'removeVowels'というメンバーはありません

var sent: String = "This website is for losers LOL!" 

func removeVowels(sent: String) -> String { 
    let vowels: [Character] = ["a", "e", "i", "o", "u", "A", "E", "I", "O", "U"] 
    let result = String(sent.characters.filter{vowels.contains($0)}) 
    return result 
} 

print(sent.removeVowels) 
+0

注意を使用することができます別の方法としてdoes not contain...filter{!vowels...


をフィルタリングする必要が**けど**母音。 –

+1

Btw、非変異型関数/メソッドの適切な名前は 'removedVowels()'のようなものになります –

答えて

1

あなたはremoveVowels自立機能を作ったので、あなたは、関数構文を使用して、それを呼び出す必要があります:

print(removeVowels(sent:sent)) 

あなたはそれStringクラスの拡張プロパティにすることができ、あなたがする必要がある場合には別の構文を使用します。

extension String { 
    var removeVowels { 
     let vowels: [Character] = ["a", "e", "i", "o", "u", "A", "E", "I", "O", "U"] 
     let result = String(self.characters.filter{!vowels.contains($0)}) 
     return result 
    } 
} 

この呼び出し構文は、現在動作します:

print(sent.removeVowels) 

編集:あなたの実装では、母音を維持するのではなく、それらを削除しました。

+0

私はこれを計算されたプロパティではなくメソッドにすることをお勧めします。計算されたプロパティは一般的にO(1)でなければならず、IMOはインスタンス自体に実際に格納されていたもののように感じるはずです。ここではどちらも当てはまりません。また、[変更点]の名前は 'removedVowels() 'にする必要があります(https://stackoverflow.com/questions/45658672/value-of-type-string-has-no-member-removevowels#comment78275401_45658672) '。 – Hamish

1

あなたは次にあなたが

print(sent.removeVowels) 
を呼び出すことができます

print(removeVowels(sent: sent)) 

それとも、文字列の拡張として、変数

extension String { 

    var removeVowels : String { 
     let vowels: [Character] = ["a", "e", "i", "o", "u", "A", "E", "I", "O", "U"] 
     let result = String(self.characters.filter{vowels.contains($0)}) 
     return result 
    } 
} 

として関数を宣言する必要がある関数を呼び出す必要がありどちらか

ところで、あなたが本当に削除母音をしたい場合、あなたは正規表現をあなたの機能はすべてを削除する

extension String { 
    var removingVowels : String { 
     return self.replacingOccurrences(of: "[aeiou]", with: "", options: [.caseInsensitive, .regularExpression]) 
    } 
} 
関連する問題