C#:从txt文件中读取数据

CRK*_*CRK 2 c# regex parsing text-files

我有一个.EDF(文本)文件.文件内容如下:

    ConfigFile.Sample, Software v0.32, CP Version 0.32
    [123_Float][2]
    [127_Number][0]
    [039_Code][70]
Run Code Online (Sandbox Code Playgroud)

我想阅读这些项目并像这样解析它们:

    123_Float - 2
    127_Number - 0
    039_Code - 70
Run Code Online (Sandbox Code Playgroud)

我怎么能用C#做到这一点?

Don*_*nut 5

好吧,你可以从这个File.ReadAllLines()方法开始.然后,遍历该文件中的行,检查它们是否与模式匹配.如果他们这样做,提取必要的文本,并用它做任何你想做的事情.

这是一个假设您想要格式行的示例[(field 1)][(field 2)]:

// Or wherever your file is located
string path = @"C:\MyFile.edf";

// Pattern to check each line
Regex pattern = new Regex(@"\[([^\]]*?)\]");

// Read in lines
string[] lines = File.ReadAllLines(path);

// Iterate through lines
foreach (string line in lines)
{
   // Check if line matches your format here
   var matches = pattern.Matches(line);

   if (matches.Count == 2)
   {
      string value1 = matches[0].Groups[1].Value;
      string value2 = matches[1].Groups[1].Value;

      Console.WriteLine(string.Format("{0} - {1}", value1, value2));
   }
}
Run Code Online (Sandbox Code Playgroud)

这把它们输出到控制台窗口,但你可以很明显你想与任何value1value2(它们写入另一个文件,将它们存储在数据结构等).

此外,请注意正则表达式不是我的强项 - 可能有一种更优雅的方式来检查一行是否符合您的模式:)

如果您想了解更多信息,请查看MSDN关于从文本文件中读取数据的文章作为起点.