Ios 类型为'的值;字符串';没有成员';去掉元音';
我正在尝试创建一种方法,可以删除给定句子中的任何元音。我创建了函数“Remove元音”,在我看来这是正确的。但是当我试图在给定的句子后调用该函数时,我得到了错误“类型'String'的值没有成员'removeVowels'”Ios 类型为'的值;字符串';没有成员';去掉元音';,ios,swift,Ios,Swift,我正在尝试创建一种方法,可以删除给定句子中的任何元音。我创建了函数“Remove元音”,在我看来这是正确的。但是当我试图在给定的句子后调用该函数时,我得到了错误“类型'String'的值没有成员'removeVowels'” 由于将remove元音作为一个独立函数,因此需要使用函数语法调用它: print(removeVowels(sent:sent)) 您可以将其作为String类的扩展属性,在这种情况下,您需要使用不同的语法: extension String { var remo
由于将
remove元音
作为一个独立函数,因此需要使用函数语法调用它:
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)
编辑:您的实现是保留元音,而不是删除元音。或者您必须调用该函数
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
}
}
然后你可以打电话
print(sent.removeVowels)
顺便说一下,如果你真的想删除你必须过滤的元音不包含
(…过滤{!元音…
)
或者,您可以使用正则表达式
extension String {
var removingVowels : String {
return self.replacingOccurrences(of: "[aeiou]", with: "", options: [.caseInsensitive, .regularExpression])
}
}
请注意,您的函数只删除元音。顺便说一句,非变异函数/方法的正确名称类似于
removingvouels()
我建议将其设置为方法,而不是计算属性。计算属性通常应为O(1)IMO应该感觉到实际上可以存储在实例本身上的东西;这里的情况也不是这样。而且,非变异名称应该是removingvouels()
。
extension String {
var removingVowels : String {
return self.replacingOccurrences(of: "[aeiou]", with: "", options: [.caseInsensitive, .regularExpression])
}
}