验证器校验方案
验证器模块包含2个部分:验证结果类型、验证器类型
命名空间
using JEngine.Core;
JValidation
JValidation是JEngine提供的验证器校验结果,里面包含了是否验证成功以及错误信息
字段
public string ErrorMsg;
错误信息
(bool)validation;
将JValidation强转为bool,该值代表是否验证通过
StringValidation
目前验证器类型制作了对String的验证
提示
建议参考JEngine自带的ValidationDemo
接口
提示
验证时对于condition参数,可以使用以下关键词(多个关键词用|拼接): min:int,max:int,nullable,capital,lower,number
min:数字
,代表最小字符串长度;
max:int
,代表最大字符串长度;
nullable
,代表字符串可以是null;
capital
,代表字符串必须是全大写;
lower
,代表字符串必须全小写;
number
,代表字符串必须全数字
/// <summary>
/// 验证字符串
/// condition可以使用以下关键词(多个关键词用|拼接): min:int,max:int,nullable,capital,lower,number
/// </summary>
/// <param name="str"></param>
/// <param name="condition"></param>
/// <returns></returns>
public static JValidation Validate(this string str, string condition)
/// <summary>
/// 验证字符串
/// condition可以使用以下关键词(多个关键词用|拼接): min:int,max:int,nullable,capital,lower,number
/// </summary>
/// <param name="str"></param>
/// <param name="ret"></param>
/// <param name="cond"></param>
/// <returns></returns>
public static JValidation Validate(this string str, string cond, out JValidation ret)
提示
第二个方法中,out的参数也是校验结果,和该方法自身的返回值是相同的,之所以这么写是为了在if的条件内直接使用Validate,然后再out出一个用于获取错误信息的对象,可以参考下面使用示范
使用示范
Debug.Log("目前验证器制作了对String的验证");
Debug.Log("条件可以使用以下关键词(多个关键词用|拼接): min:int,max:int,nullable,capital,lower,number");
Debug.Log("一种写法是StringValidation.Validate(字符串内容,条件,out var result),这个result是个JValidation,可以获取其ErrorMsg即错误信息");
var str = "111";
if (!StringValidation.Validate(str, "min:10", out var v))
{
Debug.LogError(v.ErrorMsg);
}
else
{
Debug.Log($"valid str: {str}");
}
Debug.Log("简单点也可以定义一个对象,然后用扩展方法验证,即:var result = 字符串内容.Validate(条件)");
str = "1234567890987654321";
var validated = str.Validate("max:10");
if (!validated)
{
Debug.LogError(validated.ErrorMsg);
}
else
{
Debug.Log($"valid str: {str}");
}
Debug.Log("条件可以有多个,用|分割即可,即str.Validate(条件1|条件2|...)");
str = "ABCDEFG";
validated = StringValidation.Validate(str, $"max:{int.MaxValue}|capital");
if (!validated)
{
Debug.LogError(validated.ErrorMsg);
}
else
{
Debug.Log($"valid str: {str}");
}
Debug.Log("判断是不是全是数字");
str = "1234567890987654321";
validated = str.Validate("number");
if (!validated)
{
Debug.LogError(validated.ErrorMsg);
}
else
{
Debug.Log($"valid str: {str}");
}
Debug.Log("还可以对空string做验证");
str = null;
validated = str.Validate("nullable");
if (!validated)
{
Debug.LogError(validated.ErrorMsg);
}
else
{
Debug.Log($"str is null: {str is null}");
}