首页 > 解决方案 > Swift switch 语句中的字符串模式匹配

问题描述

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

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]
    }
}

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

非常感谢!

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

标签: swift

解决方案


我发现了这个问题。我没有正确隔离问题。问题是我的源数据有一个稍微不同的“-”字符,Swift(正确地)认为它不等于 switch 案例中的条件。我清理了输入,现在它可以正常工作了。在操场上,我确实手动编写了输入,因此没有出现问题。

无论如何,非常感谢!


推荐阅读