我有一個文本文件,它看起來像這樣,當我使用一個StreamReader打開它創建一個新的文件:(「刪除」,只是告訴你什麼是我想要做的)從現有文件
A, 1, 2, 3, 4, 5 B, 1, 2, 2, 2, 2 B, 1, 1, 1, 1, 1 A, 2, 2, 3, 4, 5 -- Remove A, 1, 2, 3, 4, 5 A, 2, 2, 3, 4, 5 -- Remove B, 1, 2, 2, 2, 2 -- Remove B, 1, 1, 1, 1, 1 -- Remove A, 1, 2, 3, 4, 5 B, 1, 2, 2, 2, 2
「A」是父行,「B」是直接在父行下面的子行。有些A可能沒有子行。基本上,我想要一個新的文本文件,只有A的和他們的孩子(B)A的行中的第二個字段不包含2.因此,我的新文本文件(使用Streamwriter)將如下所示:
A, 1, 2, 3, 4, 5 B, 1, 2, 2, 2, 2 B, 1, 1, 1, 1, 1 A, 1, 2, 3, 4, 5 A, 1, 2, 3, 4, 5 B, 1, 2, 2, 2, 2
我可以得到行A,沒有「2」,但是很難得到它的下面的子行...
幫助任何人嗎?
我想我懂了工作,但它不是優雅:
List<string> str = new List<string>();
while (!file.EndOfStream)
{
var line = file.ReadLine();
str.Add(line);
}
file.Close();
using (var sw = new StreamWriter(file))
{
for(int i = 0; i <= str.Count-1; i++)
{
var values = str[i].Split(',');
if (values[0] == "A" && values[1] != "2")
{
sw.WriteLine(str[i]);
int j = i+1;
for (int e = j; e <= str.Count - 1; e++)
{
var values2 = str[e].Split(',');
if (values2[0] == "B")
{
sw.WriteLine(str[e]);
}else if(values2[0] == "A")
{
break;
}
}
}
}
}
你能告訴我們你到目前爲止的代碼嗎? –
您的刪除條件並不完全清楚。 – ryanyuyu
我添加了我到目前爲止的代碼..這似乎是一種工作..我必須繼續測試,但它不優雅。 – EriqaBana