作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在创建一个在启动时要求输入用户名的问答应用程序。我想让它无法使用诸如 #$@!^& 等字符(也包括“空格”)。我看了这篇帖子here但它完全是用 Objective-C 编写的。提前致谢。
最佳答案
基于使用扩展的 Swift 4 iOS 11.2.x,在本例中测试字符串是否为有效的十六进制数。
extension String {
var containsValidCharacter: Bool {
guard self != "" else { return true }
let hexSet = CharacterSet(charactersIn: "1234567890ABCDEFabcdef")
let newSet = CharacterSet(charactersIn: self)
return hexSet.isSuperset(of: newSet)
}
}
您可以像使用 UITextFieldDelegate 一样使用它。
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
return (string.containsValidCharacter)
}
虽然我在之前的帖子中读到 CharacterSets 不支持由多个 Unicode.Scalar 组成的字符;所以我想请谨慎使用。
关于swift - 如何在 Swift 中限制 UITextField 中的某些字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36925882/
我是一名优秀的程序员,十分优秀!