在Swift中如何将字符串中的元音字母转换为大写?
原有代码的问题
- 参数名不匹配:函数定义时形参外部名默认和内部名一致为
sentence,调用时错误使用了word作为参数标签 - 遍历逻辑错误:没有遍历待处理的输入字符串字符,反而遍历了元音字母集合,无法实现逐个字符判断转换的需求
- 语法错误:
sentence(i.uppercased())不符合Swift的字符串操作语法,无法通过编译 - 赋值逻辑错误:即使修复语法问题,直接对
result全量赋值会覆盖之前的修改,只能保留最后一次替换的结果
正确实现代码
func makeVowelsUpperCase(sentence: String) -> String { let vowels: Set<Character> = ["a", "e", "i", "o", "u"] var result = "" for char in sentence { if vowels.contains(char) { result.append(char.uppercased()) } else { result.append(char) } } return result }
也可以用高阶函数简化写法:
func makeVowelsUpperCase(sentence: String) -> String { let vowels: Set<Character> = ["a", "e", "i", "o", "u"] return sentence.map { vowels.contains($0) ? $0.uppercased() : String($0) }.joined() }
调用测试
// 调用时参数标签要和定义一致用sentence let output = makeVowelsUpperCase(sentence: "this is my house") print(output) // 输出结果:thIs Is my hOUsE
内容的提问来源于stack exchange,提问作者slowTurtle
相关产品推荐
相关产品推荐

