我想将有关PCB组件的文本文件解析为数组。部分文字如下:将文本文件解析为C#中的数组
COMP C1 MC-0000-0427 CAPACITOR 0402 0,565 5,395 2 90
C_PROP (MFG,"VISHAX") (VALUE,"10n") (TOLER,"10%") (COMPONENT_TYPE,"CAPACITOR") (REFLOC,"IN,0.02,0.0,0,CC,0.015,0.009,0.006,STD,1,YERLESIM")
C_PROP (MGC_CAT,"capacitor") (MGC_LIB,"MST Develepment Library") (MGC_INDEX,"MC-0000-0427")
C_PIN C1-1 0,565 5,395 32 2 90 PAD20X25 VA_3V3_ADC1
C_PIN C1-2 0,565 5,435 32 2 90 PAD20X25 GROUND
COMP C10 MC-0000-0427 CAPACITOR 0402 2,55 5,275 2 90
C_PROP (MFG,"VISHAX") (VALUE,"10n") (TOLER,"10%") (COMPONENT_TYPE,"CAPACITOR") (REFLOC,"IN,0.02,0.0,0,CC,0.015,0.009,0.006,STD,1,YERLESIM")
C_PROP (MGC_CAT,"capacitor") (MGC_LIB,"MST Development Library") (MGC_INDEX,"MC-0000-0427")
C_PIN C10-1 2,55 5,275 32 2 90 PAD20X25 VA_3V3_ADC4
C_PIN C10-2 2,55 5,315 32 2 90 PAD20X25 GROUND
COMP C100 MC-0000-0393 CAPACITOR 0402 3,29 4,105 2 0
C_PROP (MFG,"['MURATA','NIL',CAL CHIP']") (VALUE,"100n") (TOLER,"10%") (COMPONENT_TYPE,"CAPACITOR") (REFLOC,"IN,0.02,0.0,0,CC,0.105,0.009,0.006,std,1,YERLESIM")
C_PROP (MGC_CAT,"capacitor") (MGC_LIB,"MST Develeopment Library") (MGC_INDEX,"MC-0000-0363")
C_PIN C100-1 3,29 4,105 32 2 0 PAD20X25 GROUND
C_PIN C100-2 3,29 4,105 32 2 0 PAD20X25 VCC_2V5
这些只是文本的三个组成部分。 C1,C10和C100电容器。首先,我不需要所有这些信息。我需要的是“组件名称”(exp:C1),“组件坐标”(exp:C1的坐标是x = 0,565和y = 5,395),“组件放置哪个面”(exp:C1放置在第二面),“组件的Allignment”(exp:C1的排列是90度)以及关于该组件具有的每个引脚的相同信息。正如你所看到的,这些信息存在于文本中。
阵列将是这样的:
Column0 Column1 Column2 Column3 Column4 Column5
Row0 "C1" 0 0,565 5,395 2 90
Row1 "C1" 1 0,565 5,395 2 90
Row2 "C1" 2 0,565 5,435 2 90
Row3 "C10" 0 2,55 5,275 2 90
Row4 "C10" 1 2,55 5,275 2 90
Row5 "C10" 2 2,55 5,315 2 90
Row6 "C100" 0 3,29 4,105 2 0
Row7 "C100" 1 3,29 4,105 2 0
Row8 "C100" 2 3,25 4,105 2 0
.....
..... //and goes on..
列0:组件的名称。
第1列:组件的引脚。我会让程序写“0”来定义组件本身而不是它的引脚。然后它将写入“1”和“2”,表示组件的第1和第2引脚。
第2列:x坐标系。
第3列:y坐标线。
第4栏:面板。这个委员会有两个面孔。一些组件在一号,一些在二号脸上。
第5列:组件的分配。
该板上有750多个组件,所以这些只是冰山的顶部。我的意思是,行号不固定。当程序找到新的组件或引脚时,它会添加一个新行。一些组件有超过100个引脚,引脚名称正在改变。例如:有一个名为“KN3”的组件,其引脚被命名为“AF-18”(KF3-AF-18:与其他文件一样,它在文本中是这样写的)。所以我不会写“1”或“2”。我将在第一栏写上“AF-18”。但是这个信息,我的意思是引脚的名字存在于文件中,就像这些组件的引脚一样。
我在开始时给出的文件样本是文本的“组件”部分。还有其他的标题和部分,但我不需要它们。我只能使用以“COMP”开头的行(字之后有空格)和“COMP”行下面的引脚部分。所以我不需要以“C_PROP”开头的行。我想把所有的信息写入一个数组中。
将其拆分为每个COMP,然后针对每个COMP运行正则表达式以获取该行的列。唯一乏味的部分应该是正则表达式,但这看起来不太可怕 – Jonesopolis
你是认真的家伙吗? – 2013-06-24 20:03:31