字符串模板

问题描述:

我的任务是设计一个生成身份证号码的功能,遵循可以稍后扩展的规则。字符串模板

例如;系统可能要求生成它们的ID号码如下:18122424。这将分解为:[DepartmentId][YearCreated][Sequential]。部门= 18,年= 12,序列= 2424.

我该如何去设计一个规则引擎,允许用户更改它?我想出了类似的格式:

  1. 部门(#)
  2. 年(#)
  3. SEQ(#)
  4. 缩写(#)< - 名称缩写。

因此,上述Id的规则是:[Dept(2)][Year(2)][Seq(4)]。如果我把它作为一个字符串,我怎么解析它以获得规则?正则表达式还是普通的字符串搜索?

在概念上做这件事是否有更容易或更有效的方法?

+0

您使用哪种语言? – svick 2012-02-13 16:00:51

+0

c#,用于asp.net mvc – 2012-02-14 01:13:21

如果我是对的,你的问题是解析规则字符串,即检索字段名称和长度。

我将努力一个场的时间和可能使用Regexpr为[字母(数字),像

\[{[A-Za-z]+}\({[0-9]+}\)\] 

(MSVC语法,取回两个标记的表情)。

您还需要存储可能字段名称的字典并将数字转换为整数。

或者,组合C strchr和scanf可以做到这一点。

这不是一个“规则引擎”,这只是模板。

无论您使用何种语言都有某种模板,以及指定所有这些格式的方法。只要使用它。

我不知道是谁投了票。

生成号码 - 您首先必须决定模板。类似depid-year-seq。假设你只有这3个“变量”。那么你应该有这些变量映射到原始值。使用字符串解析器并将-上的“给定”模板分开。它会给你索引0 = depid,1 =年,2 = seq的数组。通过数组和循环利用给定指标即 每个字符串对应的值来创建一个字符串 - 0 = depid = "18" - 1 = year = "18" + "12" = "1812" - 2 = seq = "1812" + "1212" = "18121212"

反向 你应该在2 splillting它分析你的给定数量2休息.. ..我想你可以从这里接。