2012-02-13 81 views
0

我的任務是設計一個生成身份證號碼的功能,遵循可以稍後擴展的規則。字符串模板

例如;系統可能要求生成它們的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

回答

1

如果我是對的,你的問題是解析規則字符串,即檢索字段名稱和長度。

我將努力一個場的時間和可能使用Regexpr爲[字母(數字),像

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

(MSVC語法,取回兩個標記的表情)。

您還需要存儲可能字段名稱的字典並將數字轉換爲整數。

或者,組合C strchr和scanf可以做到這一點。

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 splillting它分析你的給定數量2休息.. ..我想你可以從這裏接。