我想测试输入字符串是否为""。如果输入字符串是"",则返回false。
var x = ""
func beginsWithVowel(x: String) -> Bool {
if x.characters[x.startIndex] == "a" || x.characters[x.startIndex] == "A"{
return true
}else if x.characters[x.startIndex] == "e" || x.characters[x.startIndex] == "E"{
return true
}else if x.characters[x.startIndex] == "i" || x.characters[x.startIndex] == "I"{
return true
}else if x.characters[x.startIndex] == "o" || x.characters[x.startIndex] == "O"{
return true
}else if x.characters[x.startIndex] == "u" || x.characters[x.startIndex] == "U"{
return true
}else {
return false
}
}
beginsWithVowel(x: x)
但是我收到了一个错误:致命错误:无法从空字符串形成一个字符。 我该如何解决?谢谢。 附:不能使用可选字符串,问题是如何检查空字符串,但为什么它不能在函数中返回bool。
答案 0 :(得分:1)
您可以使用guard来确保您的字符串具有第一个字符,并且您可以使用带有元音的数组并检查它是否包含第一个字符。
func beginsWithVowel(x: String) -> Bool {
guard let first = x.characters.first else { return false }
return ["a","e","i","o","u","A","E","I","O","U"].contains(first)
}
答案 1 :(得分:0)
先进行空检查
valid
使用正则表达式的方法略有不同,它包括空检查:
func beginsWithVowel(x: String) -> Bool {
if x.isEmpty { return false }
if x.characters[x.startIndex] == "a" { ...