【发布时间】:2018-07-07 05:59:46
【问题描述】:
考虑以下:
extension String {
func isValidEmail() -> Bool {
let characterset = CharacterSet(charactersIn: "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789")
print(characterset)
if self.rangeOfCharacter(from: characterset.inverted) != nil {
return false
} else {
return true
}
}
}
var name = "Login"
name.isValidEmail() // print true
var incorretLogin = "Loginъ"
incorretLogin.isValidEmail() // print false
是的,功能就是工作。但我很困惑——它是如何工作的? 如果我理解正确,它的工作方式如下: 它需要一组字符,然后检查所有测试的字符串字符是否包含集合中的符号,如果不是,则返回false。
好的,但是倒置是为了什么?如果我删除倒置,结果将是错误的:
var name = "Login"
name.isValidEmail() // false
var incorretLogin = "Logъin"
incorretLogin.isValidEmail() // false
现在我什么都不懂。 如果函数只检查字符串字母是否来自字符集,那么设置反转与否又有什么关系呢? 谁能解释一下?
我在操场上玩了一下:
let characterset = CharacterSet(charactersIn: "a")
print(characterset)
print(characterset.inverted)
打印相同的结果:
<CFCharacterSet Items(U+0061)>
<CFCharacterSet Items(U+0061)>
【问题讨论】:
-
其实你叫什么倒置 ??我的意思是你使用 inverted 词??
-
@dahiya_boy 我从这里获取代码:stackoverflow.com/questions/27703039/…