我在 ac# .net windows form 应用程序中解析一个 CSV 文件,将每一行放入我创建的类中,但是我只需要访问一些列并且所采用的文件不是标准化的。也就是说,存在的字段数可能不同,并且列可以出现在任何列中。
CSV 示例 1:
Position, LOCATION, TAG, NAME, STANDARD, EFFICIENCY, IN USE,,
1, AFT-D3, P-D3101A, EQUIPMENT 1, A, 3, TRUE
2, AFT-D3, P-D3103A, EQUIPMENT 2, B, 3, FALSE
3, AFT-D3, P-D2301A, EQUIPMENT 3, A, 3, TRUE
...
CSV 示例 2:
Position, TAG, STANDARD, NAME, EFFICIENCY, LOCATION, BACKUP, TESTED,,
1, P-D3101A, A, EQUIPMENT 1, 3, AFT-D3, FALSE, TRUE
2, P-D3103A, A, EQUIPMENT 2, 3, AFT-D3, TRUE, FALSE
3, P-D2301A, A, EQUIPMENT 3, 3, AFT-D3, FALSE, TRUE
...
正如你所看到的,我永远不会知道我必须分析的文件的格式,我唯一确定的是它总是包含我需要的几列。
我对此的解决方案是要求用户输入所需的列并将其设置为字符串,使用他们的条目将其转换为相应的整数,然后我可以将其用作位置。
string standardInpt = "";
string nameInpt = "";
string efficiencyInpt = "";
然后用户将输入一个从 A 到 ZZ 的值。
int standardLocation = 0;
int nameLocation = 0;
int efficiencyLocation = 0;
提交表单时。整数通过运行 if else... 语句获得最终值:
if(standard == "A")
{
standardLocation = 0;
}
else if(standard == "B")
{
standardLocation = 1;
}
...
等一直运行到 if VAR1 == ZZ 然后对 VAR2 和 VAR3 等重复代码。
我的课程部分看起来像:
class Equipment
{
public string Standard { get; set;}
public string Name { get; set; }
public int Efficiency { get; set; }
static Equipment FromLine(string line)
{
var data = line.split(',');
return new Equipment()
{
Standard = data[standardLocation],
Name = [nameLocation],
Efficiency = int.Parse(data[efficiencyLocation]),
};
}
}
我有更多的代码,但我认为这突出了我将使用变量来设置索引的地方。
我对此很陌生,我希望必须有一种更好的方法来实现这一点,而不必编写太多可能过多的重复 If Else 逻辑。我正在考虑某种查找表,但我无法弄清楚如何实现这一点,任何关于我可以查看的指针?
慕田峪4524236
开满天机
慕后森
相关分类