我的任务是设计一个功能,该功能可以生成遵循可以在以后扩展的规则的Id编号。
例如;系统可能要求按如下方式生成其ID号:18122424
。这将分解为:[DepartmentId][YearCreated][Sequential]
。部门= 18,年= 12,序列= 2424。
如何设计允许用户更改规则引擎的规则引擎?我想出了一种格式:
因此上述Id的规则是:[Dept(2)][Year(2)][Seq(4)]
。如果我将其作为字符串,我如何解析它以获得规则?正则表达式或普通字符串搜索?
在概念上有更简单或更有效的方法吗?
答案 0 :(得分:1)
这不是“规则引擎”,这只是模板化。
您使用的任何语言都有某种模板,以及指定所有这些格式的方法。只是使用它。
答案 1 :(得分:1)
我不知道是谁投了它。
生成数字
- 首先必须决定模板。像depid-year-seq
这样的东西。假设你只有这3个“变量”。那么你应该将这些变量映射到原始值。使用字符串解析器并在-
上拆分“给定”模板。它将为您提供索引0 = depid,1 =年,2 = seq的数组。循环遍历数组并使用给定索引上每个字符串的相应值创建一个字符串,即
- 0 = depid = "18"
- 1 = year = "18" + "12" = "1812"
- 2 = seq = "1812" + "1212" = "18121212"
反向 你应该通过2-2休息来解析你给出的号码......我想你可以从这里拿起来。
答案 2 :(得分:1)
如果我是对的,你的问题是解析规则字符串,即检索字段名称和长度。
我一次只能处理一个字段,可能会使用Regexpr作为[字母(数字)],例如
\[{[A-Za-z]+}\({[0-9]+}\)\]
(MSVC语法,检索两个标记的表达式)。
您还需要存储可能的字段名称字典并将数字转换为整数。
或者,组合的C strchr和scanf可以做到这一点。