2011-12-18 129 views
0

我想在Visual Studio中创建一个Windows窗体应用程序,它可以在单击按钮上写入文本文件。C#如何删除我的文本文件的第一行?

我有一个txt文件(例如,test.txt的),其中包含

AAAA 
BBBB 
CCCC 
DDDD 
EOS 
FFFF 
GGGG 
HHHH 
IIII 
EOS 
JJJJ 
KKKK 
LLLL 
MMMM 
NNNN 
EOS 
EOF 

那么我想它拆分成其他txt文件

**bag1.txt** 
AAAA 
BBBB 
CCCC 
DDDD 
EOS 

**bag2.txt** 
EEEE 
FFFF 
GGGG 
IIII 
EOS 

**bag3.txt** 
JJJJ 
KKKK 
LLLL 
MMMM 
NNNN 
EOS 
EOF 

这些号码是代码,

private void read3btn_Click(object sender, EventArgs e) 
    { 
     string fileName = textBox1.Text; 
     TextReader sr = new StreamReader(fileName); 
      //This allows you to do one Read operation. 

     string s = sr.ReadToEnd();; 
     sr.Close(); 

     string[] bags = s.Split(new string[] {"EOS"}, StringSplitOptions.None); 

     // This will give you an array of strings (minus the EOS field) 
     // Then write the files... 

     System.IO.File.WriteAllText(@"D:\Program-program\tesfile\bag1.txt", bags[0] + "EOS"); //< -- Add this you need the EOS at the end field the field 

     System.IO.File.WriteAllText(@"D:\Program-program\tesfile\bag2.txt", bags[1] + "EOS"); 

     System.IO.File.WriteAllText(@"D:\Program-program\tesfile\bag3.txt", bags[2] + "EOS" + bags[3]); 

    }} 

然后这样输出

**bag1.txt** 
    AAAA 
    BBBB 
    CCCC 
    DDDD 
    EOS 

**bag2.txt** 

EEEE 
FFFF 
GGGG 
IIII 
EOS 

**bag3.txt** 

JJJJ 
KKKK 
LLLL 
MMMM 
NNNN 
EOS 
EOF 

不幸的是袋子[1]和袋子[2]的输出在第一行有空行,是否有更新代码?

回答

1

您的"EOS"分隔符不包含换行符。尝试:

string[] bags = s.Split(new string[] {"EOS\n"}, StringSplitOptions.None); 

输入文件是

...DDDD\nEOS\nEEEE\n... 

与您的代码分开后,你会得到:

...DDDD\n EOS \nEEEE\n... 

注意EEEE前面有\n。通过在您分离\n,您将获得:

...DDDD\n EOS\n EEEE\n... 
+0

除非换行符是'\ r'或'\ r \ n' – 2011-12-18 19:01:21

+0

我想它可能是。我将把它留给OP来确定他的具体输入文本文件。 – 2011-12-18 19:02:48

+0

这是错误的,据说索引超出了数组的范围。 :( – Gamma 2011-12-18 19:04:37

1

呼叫.Trim()删除前导空格。

+0

嗨slaks我应该把它放在哪里? – Gamma 2011-12-18 19:01:59

+0

在你想修剪的字符串 – SLaks 2011-12-18 19:03:00

+0

嗯,你可以把我的代码吗?我的新手在这 – Gamma 2011-12-18 19:09:55

0

好吧,这不是一个大问题:) 当你读你的文件,你会得到像“AAA \ nBBB \ NCCC \ nDDD \ NEOS \ nEEE \ nFFF \ n ... EOS \ nJJJ \ n的字符串。 .. “ 如果土特产品修剪只在字符串 ”EOS“,你会得到这样的:

”AAA \ nBBB \ NCCC \ nDDD \ n“ ”\ nEEE \ nFFF \ n ...“” \ nJJJ .. ”

因为斯普利特()方法删除了 “EOS” 的字符串,而不是新的生产线就如下:)

string[] bags = s.Split(new string[] {"EOS\n"}, StringSplitOptions.None); 

..this应该正常工作:)