有一个实体类Ga1400Person,里面包含 人名name,证件号码idNumber字段
public class Ga1400Person {
private String name;
private String idNumber;
}
布控对象特征字符串定义如下
1 、采用多个键值对 ((Key1=Value1) and (Key2=Value2)) or (Key3=Value3)的公式来表示与类别对应的细化条件;
2 、 Key的取值来源于PropertyTypeEnum枚举;
3、支持模糊布控:正则表达式符号“?、*、and 、or、()”等常见的正则表达式字符;
4、公式中所涉标点符号均为英文半角;
PropertyType枚举如下:
public enum PropertyTypeEnum {
PERSON_NAME(1, "人名"),
ID_NUMBER(2, "证件号码"),
PLATE_NO(3, "车牌"),
PLATE_COLOR(4, "车牌颜色"),
VEHICLE_BRAND(5, "车辆品牌"),
VEHICLE_MODEL(6, "车辆型号"),
VEHICLE_STYLES(7, "车辆年款"),
KEYWORK(8, "关键字");
private Integer value;
private String desc;
}
写一个方法checkPerson,入参实体类Person,出参布尔值,
解析实体类 Person 的人名name和证件号码idNumber是否符合布控对象特征字符串的正则表达式规则,符合返回true,不符合返回false
举例说明
(1=白起) and (2=123456)
如上 布控对象特征字符串 正确解释为 人名是白起且证件号码是123456则返回true
((1=白起) and (2=123456)) or (1=张三)
如上 布控对象特征字符串 正确解释为 如果人名是白起且证件号码是123456,或者人名是张三则返回true
举例说明
// 如下布控对象特征字符串featureString正确解释为 如果人名是白起且证件号码是123456,或者人名是张三则返回true
String featureString = "((1=白起) and (2=123456)) or (1=张三)";
测试方法预期
public static void main(String[] args) {
// 布控对象特征字符串
String featureString = "((1=白起) and (2=123456)) or (1=张三)";
// 创建Ga1400Person实例
Ga1400Person person1 = new Ga1400Person("白起", "123456");
Ga1400Person person2 = new Ga1400Person("张三", "789012");
// 检查是否符合布控对象特征字符串规则
boolean result1 = checkPerson(person1, featureString);
boolean result2 = checkPerson(person2, featureString);
System.out.println("Person1符合布控对象特征字符串规则: " + result1);
System.out.println("Person2符合布控对象特征字符串规则: " + result2);
}
预期result1和result2都是true