我需要帮助来开发一个逻辑,帮助我确定字符串的模式(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_s3
和p1_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 name
。 group name
只会出现一次而且没有空格。
[Group] [Value][Pipe + letter][Key]
,[Value][Pipe + letter][Key]
部分可能会重复多次。
现在,我的程序将从数据源中随机读取一个字符串,并且已知该字符串将属于这些模式之一,那么我的应用程序是否可以识别该字符串属于哪种模式?
即:
if (inputString == //Pattern#1)
return 1;
我想过使用正则表达式,但我不擅长这个,我认为这个问题可能太复杂了。
更新:正如Matt所建议的那样,几乎不可能判断
ORANGE
和LIGHT
是否是值的一部分而不是组名。我提供的数据来自20世纪60年代,所以我不认为一个程序可以解决100%的问题。如果我可以使用正则表达式来帮助过滤掉80%的数据,那就足够了。我可以手动处理剩余的20%。例如,如果(inputString)与任何模式不匹配,或者模式有冲突,我们将为其赋值99(类似转储)