使用C#比较文件的特定元素及其默认语法

问题描述

与你们中的许多人不同,这对我来说是一个复杂的问题,我无法解决。 在我的一个项目中,我应该能够从输入文件中读取数据,并比较其内容而不是一个规则, 规则:-输入文件应与具有认语法的文件匹配,顺序不必匹配。 输入文件如下所示:-

@ emp_rec_file 
@ 12-10-2020 16:12:40

%emp_first_name% = foo %emp_middle_name% = foo0 %emp_last_name% = bar;  
    %emp_age% = 40;  
    %emp_dept.% = xyz;  
    %emp_joining_date% = mm-dd-yyyy; 
    
%emp_first_name% = foo1 %emp_middle_name% = foo2 %emp_last_name% = bar1;  
    %emp_age% = 28;  
    %emp_dept.% = pqrs;  
    %emp_joining_date% = mm-dd-yyyy;
    %emp_work_exp% = 10;
@EOF

此列表中可能有多名员工。 此文件应匹配的认语法w.r.t为:-

@ emp_rec_file 
@ 12-10-2020 16:12:40

%emp_first_name% = xxxxxxxx %emp_middle_name% = xxxxxxxx %emp_last_name% = xxxxxxxx;  
    %emp_age% = nn;  
    %emp_dept.% = xxxxxxxx;  
    %emp_joining_date% = xx-xx-xxxx; 
    
@EOF

仅当LHS上的条目输入时,我尝试编写的程序才会处理输入文件 输入文件中'='的正确无误,即认语法中给出的含义。例如:-

Input File          Default file        
emp_first_name      emp_first_name
emp_middle_name     emp_middle_name
emp_last_name       emp_last_name

此案成功。 到目前为止,我尝试过的操作是使用readAllLines读取输入文件,同时删除行 以@开头。 然后删除所有空白行,并将数据放入字符串列表(list1)。 然后使用sapce作为分隔符分割list1中的数据,并再次创建一个新list(list2)。 进一步使用'='作为分隔符在list3中拆分数据,以创建新的list(list3)。

var rAL = File.ReadAllLines(GV.inputFilePath).Where(l => !l.StartsWith("@"));
List<string> WoNullLines = rAL.Where(s => !string.IsNullOrWhiteSpace(s)).ToList();
List<string> spaceDelimiter = WoNullLines.SelectMany(s => s.Split(' ')).ToList();
List<string> spaceDelimiterElmnt = spaceDelimiter.SelectMany(s => s.Split('=')).ToList();
 foreach (string str in spaceDelimiter)
    {
         var LHS = Regex.Match(str,@"\%\w+\%");
        
    }

这只是对输入列表的一种类似的方法,我也对认列表使用了类似的方法。此外,我也只在输入文件中有一个emp记录时才尝试这样做。我的目标是比较输入文件的list3和文件列表3。现在我知道这种方法是不正确的,但是由于我对C#不熟悉,因此我试图找出最好的方法

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)