我有从看起来像这样的软件中获得的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);