如何使用" OR"用于比较Swift中的字符串

时间:2015-09-09 14:42:51

标签: swift operators

我希望检查变量的值 - aVar是否等于几个字母之一:

if aVar != "S" || "X" {println("NO")}

这给出了错误:

  

二元运算符||不能应用于String

类型的操作数

一个非常小的问题但无法找到答案

5 个答案:

答案 0 :(得分:2)

如果您想知道aVar是S还是X:

if (aVar=="S")||(aVar=="X") {...}

答案 1 :(得分:0)

代码中的问题是swift是一种类型安全的语言,所以:

if aVar != "S" || "X" {println("NO")}

不行。另一方面,为了使上述代码能够工作,您只需重复使用aVar这样的名称:

if (aVar != "S" || aVar != "X") {println("NO")}

欢呼声

答案 2 :(得分:0)

let aVar = "someStringValue"

if aVar == "S" || aVar == "X" {
    print("String: '\(aVar)' is equal to one or both of these strings.")
} else {
    print("String: '\(aVar)' doesn't equal to at least one of these strings.")
}

答案 3 :(得分:0)

另一种方法是使用数组:

if !contains(["S", "X"], aVar) {
    // do something
}

答案 4 :(得分:0)

已经有很多答案,但在测试多个值时,没有一个是使用显而易见的答案:一套。

let matchingSet : Set<Character> = ["S", "X", "M", "G"]

let char : Character = "A"
if matchingSet.contains(char) {
    // Do something
}

使用集合,复杂性始终为O(1),而使用多个OR语句或数组的复杂度最低为O(n)。当然,当您只需要检查2个值时,您不应该使用集合,因为这会使您的代码不易读取。您拥有的值越多,我建议使用的集合就越多。