如何检查字符串是否包含 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
我有一个接受字符串的失败初始值设定项,如果该字符串包含不正确的字符(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