我试图创建一个方法来删除给定句子中的任何元音。我创建了函数' removeVowels'在我看来似乎是正确的。但是当我尝试在给定的句子之后调用该函数时,我得到错误"类型的值'字符串'没有会员' 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 :(得分: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)
编辑:您的实施是保留元音,而不是删除它们。
答案 1 :(得分:1)
要么你必须调用函数
print(removeVowels(sent: sent))
或者你必须将函数声明为String扩展和变量
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
}
}
然后你可以打电话
print(sent.removeVowels)
顺便说一下,如果你真的想删除元音,你必须过滤 does not contain
(...filter{!vowels...
)
或者你可以使用正则表达式
extension String {
var removingVowels : String {
return self.replacingOccurrences(of: "[aeiou]", with: "", options: [.caseInsensitive, .regularExpression])
}
}