我正在尝试创建一个电子邮件验证,用于验证电子邮件中字符 @
以及 @
前后字符的位置。我可以做到这一点,但我无法将两者结合在一起。到目前为止,我有一个计算属性,它只检查电子邮件是否包含 @
。我怎样才能将它们组合在一起以检查所有条件。
extension String {
var isEmailFormat: Bool {
if let range = self.range(of: "@") {
_ = self[(self.startIndex)..<range.lowerBound]
_ = self[range.upperBound...]
}
return self.contains("@")
}
}
if !self.emailField.text!.isEmailFormat {
self.addErrorMessage("Invalid email address")
}
最佳答案
附加( boolean )子句与可选绑定(bind)用逗号分隔:
if let range = self.range(of: "@"), condition1, condition2 { ... }
但是,将切片分配给 _
不会测试任何内容,它应该是这样的:
var isEmailFormat: Bool {
if let range = self.range(of: "@"),
range.lowerBound > startIndex,
range.upperBound < endIndex {
return true
} else {
return false
}
}
或者:
var isEmailFormat: Bool {
if let range = self.range(of: "@") {
return range.lowerBound > startIndex && range.upperBound < endIndex
} else {
return false
}
}
关于ios - 如何在 Swift 4 中将 2 个 boolean 组合在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54180030/