确定字符串的模式

时间:2014-04-09 19:31:50

标签: c#

我需要帮助来开发一个逻辑,帮助我确定字符串的模式(3种不同模式)。

模式#1的几个例子:

string p1_s1 = "49.7|d 1.70|n 354.3|d 3.272|n 18|r 1808"
string p1_s2 = "51.7|d 3.177|n 18|r 1808"
string p1_s3 = "45.2|d 4.29|n 50"
string p1_s4 = "BLUE|c DARK GREEN|c WHITE

这组字符串的模式很简单:

[value][pipe + letter] [value][pipe+letter] [value](可能会重复)

模式#2的几个例子:

string p2_s1 = "ORANGE RED |m RHS 53A BLUE |m RHS 53A"
string p2_s2 = "46.9|d 6 4.574|n 15 15.7|r 1010  48.6|d 6.322"
string p2_s3 = "LIGHT GREEN |m  7.5GY 5/6"

这组字符串的模式是:

[value][pipe + letter][key] [value][pipe+letter][key]可能正在重复。

注意:区分p2_s3p1_s3是模式#1中的最小数量|是2,但在模式#2中,你可以只有一个|

模式#3的几个例子:

string p3_s1 = "CLR DRBR|r 0004  BLCK|r 0006  WHIT|r 0006"
string p3_s2 = "WGT WHGN|c 0004 YLGN|c 0006"
string p3_s3 = "296  312|d 0004  137.2|n 0006"
string p3_s4 = "HGT SH|r 0004"
string p3_s5 = "ANLP  ANLP1 PNPL|r 0004"

这组字符串的模式类似于模式#2,但字符串的开头会有group namegroup name只会出现一次而且没有空格。

[Group] [Value][Pipe + letter][Key][Value][Pipe + letter][Key]部分可能会重复多次。

现在,我的程序将从数据源中随机读取一个字符串,并且已知该字符串将属于这些模式之一,那么我的应用程序是否可以识别该字符串属于哪种模式?

即:

if (inputString == //Pattern#1)
return 1;

我想过使用正则表达式,但我不擅长这个,我认为这个问题可能太复杂了。

  

更新:正如Matt所建议的那样,几乎不可能判断ORANGELIGHT是否是值的一部分而不是组名。我提供的数据来自20世纪60年代,所以我不认为一个程序可以解决100%的问题。如果我可以使用正则表达式来帮助过滤掉80%的数据,那就足够了。我可以手动处理剩余的20%。

     

例如,如果(inputString)与任何模式不匹配,或者模式有冲突,我们将为其赋值99(类似转储)

0 个答案:

没有答案