【发布时间】:2020-05-20 22:28:22
【问题描述】:
我是 Swift 新手,在使用下面的这个函数时遇到了问题。我正在使用 SWIFT 5/Xcode 11.3。该功能旨在删除元音之前的任何字母。例如,“Brian”将返回“ian”,“Bill”将返回“ill”等。我在下面的 2 行中得到了错误。
import Foundation
func shortNameFromName(_ name: String) -> String {
// Definition of characters
let vowels = CharacterSet(charactersIn: "aeiou")
var shortName = ""
let start = name.startIndex
// Loop through each character in name
for number in 0..<name.count {
// If the character is a vowel, remove all characters before current index position
if vowels.contains(name[name.index(start, offsetBy: number)]) == true { //**ERROR: Cannot convert value of type 'Character' to expected argument type 'Unicode.Scalar'**
var shortName = name.remove(at: shortName.index(before: shortName.number)) //**ERROR: Cannot use mutating member on immutable value: 'name' is a 'let' constant**
}
}
//convert returned value to lowercase
return name.lowercased()
}
var str = "Brian" // Expected result is "ian"
shortNameFromName(str)
【问题讨论】:
标签: swift string substring character