一个基于标准进行简单且快速的 字符串
验证的库。
KKStringValidator 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中
pod 'KKStringValidator'
对于项目,必须验证某些 输入字段
、字符串
等,以确保它们接受某些标准(例如 长度
、存在 大写字母
、存在 数字
等)。
KKStringValidator 帮助检查 字符串
,以使它们满足接受的 标准
。
标准
验证 字符串
标准
失败时可用强制中断(中断验证)标准
标准
// import lib
import KKStringValidator
// code
// Create criterias
let lennghtCriteria = LengthCriteria(10)
let regexpCriteria = RegexpCriteria("[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}")
let criterias : [Criteriable] = [lennghtCriteria, UppercaseLetterExistCriteria(), LowercaseLetterExistCriteria(), NumberExistCriteria(), regexpCriteria]
// validate
StringValidator(criterias).isValide("q1Q", forceExit: false, result: { validator in
switch validator {
case .valid:
print("All valid")
case .notValid(let criteria):
print(criteria.debugErrorString)
case .notValides(let criterias):
print("Criterias that fails:")
_ = criterias.map({ print($0.debugErrorString)
})
}
})
输出
Criterias that fails:
DEBUG:LengthCriteria:Lenght less than 10
DEBUG:RegexpCriteria:no mutch to regexp [A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}
还创建了 UITextField
的 扩展
。
/// extension for UITextField for validation
extension UITextField {
/// function for validating textField text
///
/// - Parameters:
/// - criterias: array of criterias
/// - forceExit: flag for force extit. default in false
/// - result: ValidatorResult object
public func validate(_ criterias : [Criteriable], forceExit:Bool = false, result:@escaping (ValidatorResult)->Void) {
//code
}
}
用法示例
func textFieldDidEndEditing(_ textField: UITextField) {
textField.validate([LengthCriteria(4)], result: { result in
switch result {
case .valid:
print("All valid")
case .notValid(let criteria):
print(criteria.debugErrorString)
case .notValides(let criterias):
print("Criterias that fails:")
_ = criterias.map({ print($0.debugErrorString)
})
}
})
}
首先,您必须从 可用标准
中获取所需的标准或创建自定义标准。所有标准都必须符合 协议
。
protocol Criteriable {
/// debug string for helps detect problem
var debugErrorString : String {get}
/// Check if value conform to criteria
///
/// - Parameter value: value to be checked
/// - Returns: return true if conform
func isConform(to value:String) -> Bool
}
然后您可以通过调用选择的标准来验证字符串:
StringValidator([\* array of choosed criterias *\]).isValide("" \* string to must be validate *\, forceExit: false, result: { validator in
switch validator {
/// all criterias was passed
case .valid:
print("All valid")
/// first failed criteria
case .notValid(let criteria):
/// all failed criterias
case .notValides(let criterias):
}
})
就这些。您的字符串已验证,您得到结果。
struct LengthCriteria : Criteriable { \\code } \\ check string length
struct UppercaseLetterExistCriteria : Criteriable { \\code } \\ check string contains one or more char in Uppercase
struct LowercaseLetterExistCriteria : Criteriable { \\code } \\ check string contains one or more char in Lowercase
struct NumberExistCriteria : Criteriable { \\code } \\ check string exist one or more numer
struct RegexpCriteria : Criteriable { \\code } \\ check string must to RegExp
struct RangeCriteria : Criteriable { \\code } \\ check string length inside range
struct FirstCharIsLetterCriteria : Criteriable { \\code } \\ check first char is letter and optional check if in uppercase
很容易。只需创建 struct
并符合 Criteriable
协议。 示例
struct MyCustomCriteria : Criteriable {
var debugErrorString: String = debugMessage(MyCustomCriteria.self, message:"some debug message")
func isConform(to value: String) -> Bool {
/* some logic for check */
return false
}
}
就是这样。简单轻松 :)
k.krizhanovskii, [email protected]
KKStatusBarService在MIT许可证下可用。
在此特此授予任何获取本软件和相关文档文件(以下简称“软件”)副本的个人免费权,可以在没有任何限制的情况下处理该软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本,并允许向软件提供的人进行操作,但须遵守以下条件
上述版权声明和本许可声明应包含在任何软件副本或其大部分副本中。
软件按“原样”提供,不提供任何形式的保证,无论是明示的还是隐含的,包括但不限于适销性、适用于特定目的和不侵害知识产权的保证。在任何情况下,作者或版权所有者不对因合同、侵权或其他原因引起的任何索赔、损害或其他责任承担责任,无论该等索赔、损害或其他责任是否与软件或其使用或其他操作相关。