C# 读取 txt 文件的一部分



我有从看起来像这样的软件中获得的txt文件。

----------------------------------------------------------------------------
XXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXX
----------------------------------------------------------------------------
XXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXX
-- YYYYYYYYYYYYYY ----------------------------------------------------------
XXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXX
-- YYYYYYYYY ---------------------------------------------------------------
(1) AAAAAAAAAAAAAA
(2) BBBBBBBBBBBBBB
(3) CCCCCCCCCCCCCC
----------------------------------------------------------------------------
(1) AAAAAAAAAAAAAA
----------------------------------------------------------------------------
Model : AAAAAAAAAAAAAA
Firmware : XXXXXXXXXXXXXX
Serial Number : 00000000000000
Disk Size : 999 GB
-- XXXXXXXXXX --------------------------------------------------------------

我只需要从本节中读取数据:

----------------------------------------------------------------------------
(1) AAAAAAAAAAAAAA
----------------------------------------------------------------------------
Model : AAAAAAAAAAAAAA
Firmware : XXXXXXXXXXXXXX
Serial Number : 00000000000000
Disk Size : 999 GB
-- XXXXXXXXXX --------------------------------------------------------------

我像这样尝试过StreamReader:

StreamReader sw = new StreamReader(txtFile);
while (!sw.EndOfStream)
{
string line = sw.ReadLine();
if (line.Contains("(1)"))
{
OtherFunction(line);
}
}
sw.Close();

但这并不奏效。我不能使用某些只能从例如第 20 行读取到第 23 行的函数。我需要对 SteamReader 说些什么,他必须从包含------------------的行到包含-- XXXXXXXXXX ----的行

任何帮助都将得到极大的帮助。 谢谢!

您可以尝试Linq查询所需的行,如下所示:

using System.IO;
using System.Linq;
...
var lines = File
.ReadLines(txtFile)
.SkipWhile(line => !line.Contains("(1)"))         // Skip all lines before "...(1)..." 
.SkipWhile(line => !line.Contains("-------------------")) // -/- "----"
.Skip(1)                                          // Skip "----" itself
.TakeWhile(line => !line.Contains("XXXXXXXXXX"))  // Take all lines before "...XXXXXX..."
.ToArray();                                       // Have lines as an array 

而不是 StreamReader,我会使用 File.ReadAllLines(( 来返回一个字符串数组。

然后,您可以遍历数组,直到找到所需的结果提取并继续。 例如:

var lines = File.ReadLines(txtFile);

相关内容

  • 没有找到相关文章

最新更新