收到错误:将空字符串返回给bool

时间:2017-06-01 19:56:20

标签: swift

我想测试输入字符串是否为""。如果输入字符串是"",则返回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。

2 个答案:

答案 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" { ...