将.txt文件中的文本替换为另一个.txt文件

时间:2011-06-23 19:00:42

标签: c# regex parsing text-files replace

我想自动执行我现在手动执行的流程。我目前比较两个.txt文件(我们称之为“D1”和“D2”)并创建第三个(称之为“D3”),这是另外两个的组合。我需要做的是在“D1”中找到一个字符串,并在“D2”中找到一个相似/相同的字符串。一旦匹配,我需要将“D1”中的字符串替换为匹配“D2”的以下字符串,并将其作为主文件放入“D3”中。这听起来有点令人困惑所以这就是我希望它看起来像:

“D1”的.txt文件格式如下:

    1       0010  12345              DEF, DEF-0320            
    1       0020  ABC-00010G         ABC-A,1xx,10%,x1x,0603   
    1       0020A ABC-00010G         ABC-A,1xx,10%,x1x,0603   
    1       0030A ABC-00127G         ABC,4.7xx,10%,x1x,0805  

“D2”的.txt文件格式如下:

    10 BARE PCB
    20 T C40, C3112
    B C5, C45, C48
    30 B C25

我想比较“D1”和“D2”并从“D1”中找到值'0010','0020','0020A','0030A'以及值'10','20','从'D2'30'。如果(当)两组数字之间存在匹配(即'0010'和'10'),我想格式化一个新文档“D3”,如下所示:

    1       AAAA BCD  142717             DEF, DEF-0320                 T
    1       C40       ABC-00010G         ABC-A,1xx,10%,x1x,0603        T
    1       C3112     ABC-00010G         ABC-A,1xx,10%,x1x,0603        T
    1       C5        ABC-00010G         ABC-A,1xx,20%,x1x,0603        B
    1       C45       ABC-00010G         ABC-A,1xx,20%,x1x,0603        B
    1       C48       ABC-00010G         ABC-A,1xx,20%,x1x,0603        B
    1       C25       ABC-00127G         ABC,4.7xx,100%,x1x,0805       B

根据“D1”中第二个数字后面是否有“A”来分配“T / B”。如果只有一个数字,则分配'T',如果有'A'则分配'B'。此外,“D3”.txt文档中还有更多行,因为','分隔不同的值(即,对于'20',有'C40'和'C3112')。对于“D2”中的每个“,”,“D3”中需要有一个新行,其格式与上面的行相同。

1 个答案:

答案 0 :(得分:3)

  

Colton写道

     

所以我的问题是,阅读“D1”和“D2”的最佳方法是什么,并将两者比作相似的字符串而不是继续替换“D1”中的文字?

这是 a 方式(没有最佳方式,至少不是每个人都认同的方式):

  1. 逐行阅读这两个文件[?]
  2. 在每个空格[?]
  3. 上拆分每一行
  4. 对于这两个文件,创建一个二维数组[?]
  5. 比较二维数组中相应的列,并检查其中是否包含另一个[?]
  6. 将某些内容写回第3个文件[?]