我想在Visual Studio中创建一个Windows窗体应用程序,用于在按钮单击时写入文本文件。
我有一个包含
的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]的输出在第一行有一个空白行,是否还有更新代码?
答案 0 :(得分:1)
您的"EOS"
分隔符不包含换行符。尝试:
string[] bags = s.Split(new string[] {"EOS\n"}, StringSplitOptions.None);
您的输入文件是
...DDDD\nEOS\nEEEE\n...
在拆分代码后,您会得到:
...DDDD\n EOS \nEEEE\n...
请注意\n
之前的前导EEEE
。通过在分隔符中加入\n
,您将获得:
...DDDD\n EOS\n EEEE\n...
答案 1 :(得分:1)
调用.Trim()
删除前导空格。
答案 2 :(得分:0)
好的,这不是一个大问题:) 当您读取文件时,会得到一个字符串,如“AAA \ nBBB \ nCCC \ nDDD \ nEOS \ nEEE \ nFFF \ n ... EOS \ nJJJ \ n ......” 如果仅在“EOS”上修剪字符串,则得到:
“AAA \ nBBB \ nCCC \ nDDD \ n”“\ nEEE \ nFFF \ n ...”“\ n JJJ ......”
因为Split()方法删除了“EOS”字符串,而不是它后面的新行:)
string[] bags = s.Split(new string[] {"EOS\n"}, StringSplitOptions.None);
..这应该可以正常工作:)