如何从c#中的文本文件中选取特定行?

时间:2017-02-14 04:19:00

标签: c#

我的文件如下所示

  aaaaaaa
  ID 12345
  David
  bbbbbbbbbbb

我必须将人的身份和姓名分开

我的输出应该像

12345
David

有人可以帮忙吗?提前谢谢。

3 个答案:

答案 0 :(得分:1)

以下代码将帮助您解决此特定问题,试试这个并告诉我您是否遇到任何困难:

 var linesInFile = System.IO.File.ReadAllLines(@"C:\Users\Vishnuraj\Desktop\sample.txt").ToList();

 var lineOfID = linesInFile.FirstOrDefault(x => x.ToLower().StartsWith("id"));
 if (!String.IsNullOrEmpty(lineOfID))
 {
     int indexOfID = linesInFile.IndexOf(lineOfID);
     if (indexOfID < linesInFile.Count - 1)
     {
         string nameOfPerson = linesInFile[indexOfID + 1]; // will be "David"
         string personId = lineOfID.Substring(3); // will be 12345
     }
 }

答案 1 :(得分:0)

您可以像这样获取您的ID和名称:

        string[]file= File.ReadAllLines(filePath); //Read your text file this way.
        int id = 1; //first id will be found at index 1 as mentioned by you.
        for (int i = 0; i < file.Length; i++)
        {
            if (i == id)
            {
                //here is your id & Name
                Console.WriteLine(file[i]);
                if (file[id + 1] != null)//checking whether next index if null or not.
                    Console.WriteLine(file[id + 1]);
                id += 4;//incremented as you said, it always be there in a sequence
            }
        }

您可以进一步优化此代码,例如将数组转换为List并应用LINQ等...

答案 2 :(得分:0)

如果您NuGet“System.Interactive”,那么您可以这样做:

var lines = 
    File
        .ReadLines(fileName)
        .Skip(1)
        .Take(2)
        .SelectMany(x => x.Split(' ').TakeLast(1))
        .ToArray();

var id = lines[0];
var name = lines[1];