【问题标题】:How to check if a string contains multiple characters in Swift 5如何在 Swift 5 中检查字符串是否包含多个字符
【发布时间】:2019-09-04 18:05:11
【问题描述】:

我有一个失败初始化器,它接受一个字符串,如果这个字符串包含不正确的字符(T、A、C、G)我想返回 nil:

我试过这样的方法,不成功:

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

    self.strand = strand
}

我不知何故被两个contains 调用弄糊涂了,所以我不确定我的检查是否正确。
任何帮助表示赞赏。

【问题讨论】:

    标签: swift swift5


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      【解决方案3】:

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

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

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

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

      【讨论】:

        猜你喜欢
        • 2014-07-24
        • 2014-12-27
        • 2016-01-25
        • 2019-12-29
        • 1970-01-01
        • 2017-09-23
        • 1970-01-01
        • 2019-01-15
        • 1970-01-01
        相关资源
        最近更新 更多