Swift开关语句中的字符串模式匹配

Swift开关语句中的字符串模式匹配,swift,Swift,我在swift Switch中遇到模式匹配问题。我需要检查一个字符串,看看它是否包含一些字符,并根据这些字符返回数据。 我有以下(缩短的)代码: 如果我将字符串“RE-2”传递给函数,它将切换所有语句,然后使用默认情况。如果我在操场上尝试一个非常类似的代码,它会正常工作。 我做错什么了吗?如何获得正确的返回值 多谢各位 编辑:更正代码中的大括号和缩进。解决方案现在在答案中。我发现了问题所在。我没有正确地隔离问题。 问题是,我的源数据有一个稍微不同的“-”字符,SWIFT(正确地)没有考虑到交换情

我在swift Switch中遇到模式匹配问题。我需要检查一个字符串,看看它是否包含一些字符,并根据这些字符返回数据。 我有以下(缩短的)代码:

如果我将字符串“RE-2”传递给函数,它将切换所有语句,然后使用默认情况。如果我在操场上尝试一个非常类似的代码,它会正常工作。 我做错什么了吗?如何获得正确的返回值

多谢各位


编辑:更正代码中的大括号和缩进。解决方案现在在答案中。

我发现了问题所在。我没有正确地隔离问题。 问题是,我的源数据有一个稍微不同的“-”字符,SWIFT(正确地)没有考虑到交换情况中的条件。我对输入进行了消毒,现在可以正常工作了。在操场上,我确实手动编写了输入,因此问题没有出现


无论如何,非常感谢你

操场应该不会有不同的结果。
所有和弦
都一样吗?难道你不能把
所有和弦
编入字典,比如
[“RE-2”:一些和弦,…]
?“如果我在操场上尝试一个非常相似的代码,它会正常工作。”这意味着当你把它放在操场上时,你没有发现问题。您删除了导致问题的代码部分。请隔离问题并在问题中包含。粘贴的代码没有正确的大括号数,并且缩进异常。你确定你共享了所有相关代码吗?大家好,很抱歉没有在帖子中包含所有相关信息,仍在努力学习。不管怎样,我发现了问题。正如@Sweeper正确指出的,我没有正确地隔离问题。问题是,我的源数据有一个稍微不同的“-”字符,SWIFT(正确地)没有考虑到交换情况中的条件。我对输入进行了消毒,现在可以正常工作了。在操场上,我确实手动编写了输入,因此问题没有出现。无论如何,非常感谢你!
static func getCorrectChords(chord: String) -> [Chord] {
    let test = chord
    switch test {
    case let x where x.contains("-") && x.contains("2"):
        return allChords[8]

    ///// other similar statements

    default:
        return allChords[0]
    }
}