代码之家  ›  专栏  ›  技术社区  ›  Adrian

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

  •  0
  • Adrian  · 技术社区  · 7 年前

    我有一个接受字符串的失败初始值设定项,如果此字符串包含不正确的字符(T、a、C、G),我希望返回nil:

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

    我不知怎么被这两个搞糊涂了 contains 打电话来,所以我不确定我的支票是否正确。
    如有任何帮助,我们将不胜感激。

    0 回复  |  直到 7 年前
        1
  •  5
  •   vadian    7 年前

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

    init?(strand: String) {
        guard strand.rangeOfCharacter(from: CharacterSet(charactersIn: "TACG")) == nil else { return nil }
        self.strand = strand
    }
    
        2
  •  2
  •   Leo Dabus    7 年前

    如果您不想导入Foundation,也可以使用Collection方法allsatisfiet

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

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

    let allSatisfy = "CGAT".allSatisfy("TACG".contains)
    print(allSatisfy)  // true
    
        3
  •  1
  •   Mohmmad S    7 年前

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

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