我想用几十个条目解析文本文件。现在,我有一个简单化向下的解决方案,通过逐行地读取并比较了对硬编码字符串:C#解析文本文件 - 按索引访问类字段
while ((line = reader.ReadLine()) != null) //returns null if end of stream
{
cmpStr = "MODE";
try
{
if (line.Equals(cmpStr))
GlobalData.mode = Convert.ToInt32(line.Remove(0, cmpStr.Length));
}
catch { }
cmpStr = "TIME_YEAR";
try
{
if (line.Equals(cmpStr))
GlobalData.time_year = Convert.ToInt32(line.Remove(0, cmpStr.Length));
}
catch { }
// ... repeat to parse the remaining lines
}
全球国际会议是一个静态类,看起来像这样:
public static class GlobalData
{
public static int mode;
public static int time_year;
public static int time_month;
public static int time_day;
public static int time_hour;
public static int time_minute;
// other entries omitted
public static string[] GlobalKeywords = new string[37]
{
"MODE",
"TIME_YEAR",
"TIME_MONTH",
"TIME_DAY",
"TIME_HOUR",
"TIME_MINUTE",
// other entries omitted
};
}
如果它是可以通过指数访问我的静态字段,我会做:
int i = 0;
while ((line = reader.ReadLine()) != null)
{
cmpStr = GlobalData.GlobalKeywords[i]; // when i == 0: cmpStr = "MODE"
if (line.Equals(cmpStr))
GlobalData[i] = Convert.ToInt32(line.Remove(0, cmpStr.Length));
// GlobalData[0] would be GlobalData.mode, and so on (but doesn't work)
i++;
}
catch { }
所以,尽管我可以设置一个循环来比较关键字字符串数组, 我该如何分配我的静态类的某个字段?
BR 克里斯
我不知道做GlobalData [i]如何成为GlobalData.mode。 – srsyogesh
你能举一个关于如何格式化你的输入文件的例子吗? – Steve
你是对的,那是失踪。它是一个.txt文件,其中每个条目位于一行中,并且行由CR + LF(Windows换行符)分隔。例如,该文件可能如下所示:MODE 5 TIME_YEAR 2013 TIME_MONTH 10 等 –
user2286339