如何检查字符串是否包含 Swift 中的多个字符 5

How to check if a string contains multiple characters in Swift 5

我有一个接受字符串的失败初始值设定项,如果该字符串包含不正确的字符(T、A、C、G),我想 return nil:

我试过类似的方法,没有成功:

init?(strand: String) {
    let success = strand.contains(where:  { !"TACG".contains([=11=]) })
    if !success {
        return nil
    }

    self.strand = strand
}

不知何故,我对这两个 contains 调用感到困惑,所以我不确定我的检查是否正确。
任何帮助表示赞赏。

只需移动 ! 位置,查看下面的代码。

 init?(strand: String) {
    let success = !strand.contains(where:  { "TACG".contains([=10=]) }) 
    if !success {
        return nil
    }
    self.strand = strand
}

在这种情况下,我更喜欢 API rangeOfCharacter(from,它根据字符集

检查字符串
init?(strand: String) {
    guard strand.rangeOfCharacter(from: CharacterSet(charactersIn: "TACG")) == nil else { return nil }
    self.strand = strand
}

如果你不想导入 Foundation 你也可以使用 Collection 方法 allSatisfy

func allSatisfy(_ predicate: (Character) throws -> Bool) rethrows -> Bool

并确保您的字符串包含所有字符

let allSatisfy = "CGAT".allSatisfy("TACG".contains)
print(allSatisfy)  // true