Вы можете использовать метод коллекции func drop(while predicate: (Character) throws -> Bool) rethrows -> Substring
, пока строка "aeiou" не содержит символов и возвращает подстроку:
func shortName(from name: String) -> String { name.drop{ !"aeiou".contains($0) }.lowercased() }
shortName(from: "Brian") // "ian"
shortName(from: "Bill") // "ill"
Что касается проблем в вашем коде, проверьте комментарии с помощью кода ниже:
func shortName(from name: String) -> String {
// you can use a string instead of a CharacterSet to fix your first error
let vowels = "aeiou"
// to fix your second error you can create a variable from your first parameter name
var name = name
// you can iterate through each character using `for character in name`
for character in name {
// check if the string with the vowels contain the current character
if vowels.contains(character) {
// and remove the first character from your name using `removeFirst` method
name.removeFirst()
}
}
// return the resulting name lowercased
return name.lowercased()
}
shortName(from: "Brian") // "ian"